PATH:
home
/
thebhoeo
/
public_html
/
readtravel
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Read Travel — UX & Conversion Audit 2026</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link href="https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,400;0,600;0,700;0,800;0,900;1,400&family=Nunito+Sans:ital,wght@0,300;0,400;0,600;0,700;1,300;1,400&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> <style> /* ═══════════════════════════════════════════ VARIABLES & RESET ═══════════════════════════════════════════ */ :root { --navy: #0C1F3F; --navy2: #112347; --navy3: #162C56; --teal: rgb(6 214 199); --teal2: #0099AE; --teal3: #006478; --amber: #F5A623; --red: #EF4444; --green: #10B981; --slate: #334155; --slate2: #475569; --muted: #94A3B8; --border: rgba(255,255,255,0.08); --border2: rgba(255,255,255,0.04); --white: #FFFFFF; --off: #F8FAFC; --light: #E2E8F0; --card-bg: rgba(255,255,255,0.03); --card-bg2:rgba(255,255,255,0.06); --text-body:#CBD5E1; --text-dim: #64748B; --font-head:'Outfit', sans-serif; --font-body:'Outfit', sans-serif; --font-mono:'JetBrains Mono', monospace; --radius: 12px; --radius-sm: 8px; --shadow: 0 4px 24px rgba(0,0,0,0.4); --shadow-lg: 0 12px 48px rgba(0,0,0,0.5); } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { background: var(--navy); color: var(--text-body); font-family: var(--font-body); font-size: 15px; line-height: 1.7; -webkit-font-smoothing: antialiased; } /* ═══════════════════════════════════════════ PRINT STYLES ═══════════════════════════════════════════ */ @media print { body { background: #fff; color: #111; } .section { page-break-inside: avoid; } .cover { page-break-after: always; min-height: auto; padding: 40px; } .cover-bg, .noise-overlay, .grid-overlay { display: none; } } /* ═══════════════════════════════════════════ UTILITY ═══════════════════════════════════════════ */ .teal { color: var(--teal); } .amber { color: var(--amber); } .red { color: var(--red); } .green { color: var(--green); } .muted { color: var(--muted); } .mono { font-family: var(--font-mono); } /* ═══════════════════════════════════════════ COVER ═══════════════════════════════════════════ */ .cover { position: relative; min-height: 100vh; display: flex; flex-direction: column; justify-content: space-between; padding: 64px 80px; overflow: hidden; background: linear-gradient(135deg, #060F1E 0%, #0C1F3F 40%, #102448 100%); } .cover-bg { position: absolute; inset: 0; overflow: hidden; pointer-events: none; } .cover-bg::before { content: ''; position: absolute; top: -200px; right: -200px; width: 800px; height: 800px; background: radial-gradient(circle, rgba(0,194,203,0.12) 0%, transparent 65%); border-radius: 50%; } .first-sec { margin-top: 30%; } .cover-bg::after { content: ''; position: absolute; bottom: -100px; left: -100px; width: 600px; height: 600px; background: radial-gradient(circle, rgba(0,194,203,0.06) 0%, transparent 65%); border-radius: 50%; } .grid-overlay { position: absolute; inset: 0; background-image: linear-gradient(rgba(0,194,203,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(0,194,203,0.04) 1px, transparent 1px); background-size: 60px 60px; pointer-events: none; } .noise-overlay { position: absolute; inset: 0; opacity: 0.03; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E"); pointer-events: none; } .cover-eyebrow { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; color: var(--teal); text-transform: uppercase; margin-bottom: 24px; display: flex; align-items: center; gap: 12px; } .cover-eyebrow::before { content: ''; display: block; width: 32px; height: 1px; background: var(--teal); } .cover-headline { font-family: var(--font-head); font-size: clamp(48px, 7.5vw, 90px); font-weight: 900; letter-spacing: -0.04em; line-height: 0.95; color: var(--white); letter-spacing: -0.03em; margin-bottom: 16px; } .cover-headline span { color: var(--teal); display: block; } .cover-subtitle { font-size: 20px; font-weight: 300; color: rgba(255,255,255,0.5); max-width: 500px; margin-bottom: 60px; letter-spacing: 0.01em; } .cover-meta { display: flex; gap: 40px; margin-bottom: 60px; } .cover-meta-item { display: flex; flex-direction: column; gap: 4px; } .cover-meta-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.15em; color: var(--muted); text-transform: uppercase; } .cover-meta-value { font-size: 14px; color: rgba(255,255,255,0.7); font-weight: 500; } .cover-scores { display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--border); } .cover-score-item { background: rgba(10,22,40,0.8); padding: 24px 20px; text-align: center; backdrop-filter: blur(10px); transition: background 0.2s; } .cover-score-item:hover { background: rgba(15,32,64,0.9); } .cover-score-number { font-family: var(--font-head); font-size: 42px; font-weight: 800; color: var(--teal); line-height: 1; margin-bottom: 6px; } .cover-score-number.warn { color: #F5A623; } .cover-score-number.alert { color: var(--red); } .cover-score-label { font-size: 11px; color: var(--muted); font-weight: 500; letter-spacing: 0.05em; text-transform: uppercase; } .cover-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 32px; border-top: 1px solid var(--border); margin-top: 40px; } .cover-footer-left { font-family: var(--font-mono); font-size: 11px; color: var(--muted); letter-spacing: 0.1em; } .cover-footer-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--teal); display: inline-block; margin: 0 8px; animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } .cover-confidential { background: rgba(0,194,203,0.1); border: 1px solid rgba(0,194,203,0.2); color: var(--teal); font-size: 10px; font-family: var(--font-mono); letter-spacing: 0.15em; padding: 6px 12px; border-radius: 4px; text-transform: uppercase; } /* ═══════════════════════════════════════════ PAGE WRAPPER ═══════════════════════════════════════════ */ .page { max-width: 1200px; margin: 0 auto; padding: 80px 60px; } /* ═══════════════════════════════════════════ SECTION HEADER ═══════════════════════════════════════════ */ .section-header { display: flex; align-items: flex-start; gap: 32px; margin-bottom: 48px; padding-bottom: 40px; border-bottom: 1px solid var(--border); } .section-number { font-family: var(--font-head); font-size: 80px; font-weight: 800; color: rgba(0,178,200,0.15); line-height: 1; flex-shrink: 0; letter-spacing: -0.05em; } .section-header-text {} .section-eyebrow { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.2em; color: var(--teal); text-transform: uppercase; margin-bottom: 8px; } .section-title { font-family: var(--font-head); font-size: 36px; font-weight: 800; color: var(--white); line-height: 1.1; letter-spacing: -0.02em; margin-bottom: 10px; } .section-desc { font-size: 14px; color: var(--muted); max-width: 600px; line-height: 1.6; } /* ═══════════════════════════════════════════ EXECUTIVE SUMMARY ═══════════════════════════════════════════ */ .exec-summary { background: var(--navy2); border: 1px solid var(--border); border-radius: var(--radius); padding: 60px 80px; position: relative; overflow: hidden; } .exec-summary::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: linear-gradient(to bottom, var(--teal), transparent); } .exec-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.2em; color: var(--teal); text-transform: uppercase; margin-bottom: 24px; } .exec-text { font-size: 17px; line-height: 1.8; color: rgba(255,255,255,0.75); margin-bottom: 24px; font-weight: 300; } .exec-text strong { color: var(--white); font-weight: 600; } .exec-pull { font-size: 22px; font-weight: 600; color: var(--white); line-height: 1.5; border-left: 3px solid var(--teal); padding-left: 24px; margin: 32px 0; font-family: var(--font-head); } /* ═══════════════════════════════════════════ DIVIDER ═══════════════════════════════════════════ */ .divider { height: 1px; background: linear-gradient(to right, var(--teal3), transparent); margin: 0; } .section-sep { height: 80px; background: linear-gradient(to bottom, var(--navy2), var(--navy)); } /* ═══════════════════════════════════════════ SEVERITY BADGE ═══════════════════════════════════════════ */ .badge { display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; padding: 4px 10px; border-radius: 4px; white-space: nowrap; } .badge-critical { background: rgba(239,68,68,0.15); color: #F87171; border: 1px solid rgba(239,68,68,0.3); } .badge-high { background: rgba(245,158,11,0.15); color: #FCD34D; border: 1px solid rgba(245,158,11,0.3); } .badge-medium { background: rgba(148,163,184,0.12); color: #94A3B8; border: 1px solid rgba(148,163,184,0.2); } .badge-dot-critical { width: 5px; height: 5px; border-radius: 50%; background: #F87171; } .badge-dot-high { width: 5px; height: 5px; border-radius: 50%; background: #FCD34D; } .badge-dot-medium { width: 5px; height: 5px; border-radius: 50%; background: #94A3B8; } .status-ok { background: rgba(16,185,129,0.15); color: #34D399; border: 1px solid rgba(16,185,129,0.3); } .status-warn { background: rgba(245,158,11,0.15); color: #FCD34D; border: 1px solid rgba(245,158,11,0.3); } .status-miss { background: rgba(239,68,68,0.15); color: #F87171; border: 1px solid rgba(239,68,68,0.3); } /* ═══════════════════════════════════════════ ISSUE CARDS ═══════════════════════════════════════════ */ .issues-grid { display: flex; flex-direction: column; gap: 2px; } .issue-card { display: grid; grid-template-columns: 48px 1fr 140px; gap: 0; border-radius: 0; overflow: hidden; border: 1px solid var(--border2); border-bottom: none; transition: all 0.2s; } .issue-card:first-child { border-radius: var(--radius) var(--radius) 0 0; } .issue-card:last-child { border-radius: 0 0 var(--radius) var(--radius); border-bottom: 1px solid var(--border2); } .issue-card:hover { background: var(--card-bg2); z-index: 1; transform: translateX(2px); } .issue-num { display: flex; align-items: flex-start; justify-content: center; padding: 20px 0 0; font-family: var(--font-mono); font-size: 11px; font-weight: 500; color: var(--muted); background: rgba(0,0,0,0.2); border-right: 1px solid var(--border2); } .issue-body { padding: 20px 24px; background: var(--card-bg); } .issue-title { font-size: 14px; font-weight: 600; color: var(--white); margin-bottom: 6px; line-height: 1.4; } .issue-details { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; } .issue-detail-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 4px; } .issue-detail-label.impact { color: var(--red); opacity: 0.7; } .issue-detail-label.fix { color: var(--green); opacity: 0.7; } .issue-detail-text { font-size: 12.5px; color: var(--text-body); line-height: 1.55; } .issue-severity { padding: 20px 16px; display: flex; align-items: flex-start; justify-content: flex-end; background: var(--card-bg); } /* severity stripe on left */ .issue-card.sev-critical { border-left: 3px solid var(--red); } .issue-card.sev-high { border-left: 3px solid var(--amber); } .issue-card.sev-medium { border-left: 3px solid var(--slate2); } /* ═══════════════════════════════════════════ LEAK CARDS ═══════════════════════════════════════════ */ .leaks-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .leak-card { background: var(--card-bg); border: 1px solid var(--border2); border-radius: var(--radius); overflow: hidden; position: relative; } .leak-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, var(--red), transparent); } .leak-card-header { padding: 20px 24px 14px; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .leak-num { font-family: var(--font-head); font-size: 36px; font-weight: 800; color: rgba(239,68,68); line-height: 1; flex-shrink: 0; } .leak-title { font-size: 14px; font-weight: 600; color: var(--white); line-height: 1.4; margin-top: 4px; } .leak-divider { height: 1px; background: var(--border2); margin: 0 24px; } .leak-why, .leak-fix { padding: 12px 24px; font-size: 12.5px; line-height: 1.55; color: var(--text-body); } .leak-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 4px; display: block; } .leak-label.why { color: var(--red); opacity: 0.8; } .leak-label.fix { color: var(--teal); opacity: 0.8; } /* ═══════════════════════════════════════════ CREDIBILITY TABLE ═══════════════════════════════════════════ */ .cred-table { width: 100%; border-collapse: separate; border-spacing: 0 3px; } .cred-table thead th { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.15em; text-transform: uppercase; color: var(--muted); padding: 0 16px 12px; text-align: left; font-weight: 500; } .cred-table tbody tr { background: var(--card-bg); transition: background 0.2s; } .cred-table tbody tr:hover { background: var(--card-bg2); } .cred-table tbody td { padding: 14px 16px; font-size: 13px; vertical-align: top; border-top: 1px solid var(--border2); border-bottom: 1px solid var(--border2); } .cred-table tbody td:first-child { border-left: 1px solid var(--border2); border-radius: var(--radius-sm) 0 0 var(--radius-sm); text-align: center; } .cred-table tbody td:last-child { border-right: 1px solid var(--border2); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; } .cred-item-name { font-weight: 600; color: var(--white); font-size: 13px; } .cred-state { color: var(--text-body); font-size: 12.5px; } .cred-action { color: var(--teal); font-size: 12.5px; } .cred-action::before { content: '→ '; font-weight: 700; } /* ═══════════════════════════════════════════ MOBILE RISK CARDS ═══════════════════════════════════════════ */ .mobile-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } .mobile-card { background: var(--card-bg); border: 1px solid var(--border2); border-radius: var(--radius); padding: 24px; position: relative; overflow: hidden; } .mobile-card::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, var(--teal3), transparent); } .mobile-icon { width: 44px; height: 44px; background: rgba(0,194,203,0.1); border: 1px solid rgba(0,194,203,0.2); border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; font-size: 20px; margin-bottom: 16px; } .mobile-card-title { font-family: var(--font-head); font-size: 15px; font-weight: 700; color: var(--white); margin-bottom: 8px; } .mobile-card-problem { font-size: 12.5px; color: rgba(239,68,68,0.9); margin-bottom: 12px; line-height: 1.5; } .mobile-card-fix { font-size: 12.5px; color: var(--text-body); line-height: 1.5; padding-top: 12px; border-top: 1px solid var(--border2); } .mobile-card-fix::before { content: '✦ Fix: '; color: var(--teal); font-weight: 600; font-size: 11px; } /* ═══════════════════════════════════════════ WINS / ROADMAP ═══════════════════════════════════════════ */ .wins-grid { display: flex; flex-direction: column; gap: 10px; } .win-row { display: grid; grid-template-columns: 40px 1fr 200px 90px 180px; gap: 0; border: 1px solid var(--border2); border-radius: var(--radius-sm); overflow: hidden; align-items: stretch; transition: all 0.2s; } .win-row:hover { border-color: rgba(0,194,203,0.2); } .win-col { padding: 16px 18px; border-right: 1px solid var(--border2); display: flex; align-items: flex-start; } .win-col:last-child { border-right: none; } .win-num { font-family: var(--font-mono); font-size: 11px; color: var(--muted); background: rgba(0,0,0,0.2); justify-content: center; align-items: center; padding-top: 18px; } .win-action { flex-direction: column; gap: 4px; background: var(--card-bg); justify-content: center; } .win-action-title { font-size: 13px; font-weight: 600; color: var(--white); line-height: 1.4; } .win-outcome { flex-direction: column; background: var(--card-bg); } .win-outcome-text { font-size: 12px; color: var(--text-body); line-height: 1.5; } .win-effort { justify-content: center; align-items: center; background: var(--card-bg); } .effort-badge { font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: 0.1em; padding: 5px 10px; border-radius: 4px; text-transform: uppercase; } .effort-low { background: rgba(16,185,129,0.15); color: #34D399; border: 1px solid rgba(16,185,129,0.25); } .effort-medium { background: rgba(245,158,11,0.15); color: #FCD34D; border: 1px solid rgba(245,158,11,0.25); } .effort-high { background: rgba(239,68,68,0.12); color: #F87171; border: 1px solid rgba(239,68,68,0.25); } .win-owner { flex-direction: column; gap: 3px; background: var(--card-bg); } .win-owner-text { font-size: 12px; color: var(--teal); } .table-header-row { display: grid; grid-template-columns: 40px 1fr 200px 90px 180px; gap: 0; padding: 0 0 8px; margin-bottom: 4px; } .th { padding: 0 18px; font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.15em; text-transform: uppercase; color: var(--muted); } /* ═══════════════════════════════════════════ COMPETITOR SECTION ═══════════════════════════════════════════ */ .comp-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 48px; } .comp-card { background: var(--card-bg); border: 1px solid var(--border2); border-radius: var(--radius); overflow: hidden; position: relative; transition: all 0.25s; } .comp-card:hover { border-color: rgba(0,194,203,0.2); transform: translateY(-2px); } .comp-card.featured { border-color: rgba(0,194,203,0.25); background: rgba(0,194,203,0.04); } .comp-card.featured::before { content: 'READ TRAVEL'; position: absolute; top: 12px; right: 12px; font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.15em; background: rgba(0,194,203,0.15); color: var(--teal); padding: 3px 8px; border-radius: 3px; border: 1px solid rgba(0,194,203,0.25); } .comp-header { padding: 20px 20px 14px; } .comp-name { font-family: var(--font-head); font-size: 17px; font-weight: 700; color: var(--white); margin-bottom: 4px; } .comp-url { font-size: 11px; color: var(--muted); font-family: var(--font-mono); } .comp-rating { display: flex; align-items: center; gap: 10px; padding: 12px 20px; border-top: 1px solid var(--border2); } .comp-stars { color: var(--amber); font-size: 13px; letter-spacing: 2px; } .comp-score { font-family: var(--font-head); font-size: 20px; font-weight: 800; color: var(--white); } .comp-review-count { font-size: 11px; color: var(--muted); } .comp-features { padding: 14px 20px; border-top: 1px solid var(--border2); display: flex; flex-direction: column; gap: 6px; } .comp-feature { display: flex; align-items: center; gap: 8px; font-size: 12px; } .feat-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; } .feat-yes { background: var(--green); } .feat-no { background: rgba(148,163,184,0.3); } .feat-part { background: var(--amber); } .feat-label { color: var(--text-body); } .feat-label.dim { color: var(--muted); } .comp-standout { padding: 14px 20px; border-top: 1px solid var(--border2); font-size: 12px; color: var(--teal); line-height: 1.5; } .comp-standout::before { content: '✦ '; color: var(--teal3); } .comp-standout.warn { color: var(--amber); } .comp-standout.warn::before { color: var(--amber); } /* ═══════════════════════════════════════════ CALLOUT BOX ═══════════════════════════════════════════ */ .callout { border-radius: var(--radius-sm); padding: 16px 20px; font-size: 13px; margin: 24px 0; display: flex; gap: 12px; align-items: flex-start; } .callout-info { background: rgba(0,194,203,0.07); border: 1px solid rgba(0,194,203,0.15); color: rgba(203,233,235,0.9); } .callout-warn { background: rgba(245,158,11,0.07); border: 1px solid rgba(245,158,11,0.2); color: rgba(245,218,150,0.9); } .callout-icon { font-size: 16px; flex-shrink: 0; margin-top: 1px; } /* ═══════════════════════════════════════════ PRIORITY MATRIX (CLOSING) ═══════════════════════════════════════════ */ .priority-matrix { background: linear-gradient(135deg, var(--navy2), var(--navy3)); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; } .priority-matrix-header { background: rgba(0,194,203,0.1); border-bottom: 1px solid var(--border); padding: 28px 40px; display: flex; align-items: center; gap: 16px; } .priority-matrix-title { font-family: var(--font-head); font-size: 24px; font-weight: 700; color: var(--white); } .priority-track { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--border2); } .priority-col { padding: 28px 32px; background: rgba(10,22,40,0.6); } .priority-col-header { display: flex; align-items: center; gap: 10px; margin-bottom: 20px; } .priority-col-dot { width: 10px; height: 10px; border-radius: 50%; } .priority-col-label { font-family: var(--font-mono); font-size: 11px; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase; } .priority-col-timeframe { font-size: 11px; color: var(--muted); margin-top: 2px; } .priority-item { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; color: var(--text-body); margin-bottom: 8px; line-height: 1.45; } .priority-item::before { content: '→'; color: var(--teal3); flex-shrink: 0; font-size: 12px; margin-top: 1px; } /* ═══════════════════════════════════════════ STAT STRIP ═══════════════════════════════════════════ */ .stat-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 40px 0; } .stat-card { background: var(--card-bg); border: 1px solid var(--border2); border-radius: var(--radius); padding: 24px; text-align: center; position: relative; overflow: hidden; } .stat-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; } .stat-card.c-red::before { background: var(--red); } .stat-card.c-amber::before { background: var(--amber); } .stat-card.c-teal::before { background: var(--teal); } .stat-card.c-green::before { background: var(--green); } .stat-number { font-family: var(--font-head); font-size: 48px; font-weight: 800; line-height: 1; margin-bottom: 6px; } .stat-number.c-red { color: var(--red); } .stat-number.c-amber { color: var(--amber); } .stat-number.c-teal { color: var(--teal); } .stat-number.c-green { color: var(--green); } .stat-label { font-size: 12px; color: var(--muted); font-weight: 500; text-transform: uppercase; letter-spacing: 0.08em; } .stat-sub { font-size: 11px; color: var(--text-dim); margin-top: 4px; } /* ═══════════════════════════════════════════ SECTION BG ALTERNATION ═══════════════════════════════════════════ */ .section-dark { background: var(--navy); } .section-alt { background: var(--navy2); } .section-alt2 { background: linear-gradient(to bottom, var(--navy), #0A1B30); } /* ═══════════════════════════════════════════ FOOTER ═══════════════════════════════════════════ */ .footer { background: var(--navy); border-top: 1px solid var(--border); padding: 32px 60px; display: flex; align-items: center; justify-content: space-between; max-width: 100%; } .footer-left { font-family: var(--font-mono); font-size: 11px; color: var(--muted); letter-spacing: 0.1em; } .footer-right { font-size: 12px; color: var(--muted); } /* ─── SCROLLBAR ─── */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: var(--navy); } ::-webkit-scrollbar-thumb { background: var(--navy3); border-radius: 3px; } </style> </head> <body> <!-- ═══════════════════════════════════════════ COVER ═══════════════════════════════════════════ --> <div class="cover"> <div class="cover-bg"></div> <div class="grid-overlay"></div> <div class="noise-overlay"></div> <div class="first-sec"> <div class="cover-eyebrow">UX · Conversion · Credibility Audit</div> <div class="cover-headline"> Read<span>Travel.</span> </div> <div class="cover-subtitle">A full-site audit identifying every friction point, credibility gap, and conversion leak — with a clear roadmap to fix them.</div> <div class="cover-meta"> <div class="cover-meta-item"> <span class="cover-meta-label">Site</span> <span class="cover-meta-value">http://readtravel.co.uk</span> </div> <div class="cover-meta-item"> <span class="cover-meta-label">Prepared</span> <span class="cover-meta-value">27<small>th</small> February 2026</span> </div> <div class="cover-meta-item"> <span class="cover-meta-label">Competitors Benchmarked</span> <span class="cover-meta-value">9 Direct Competitors</span> </div> <div class="cover-meta-item"> <span class="cover-meta-label">Status</span> <span class="cover-meta-value">Confidential</span> </div> </div> <div class="cover-scores"> <div class="cover-score-item"> <div class="cover-score-number alert">18</div> <div class="cover-score-label">UX Issues</div> </div> <div class="cover-score-item"> <div class="cover-score-number warn">10</div> <div class="cover-score-label">Conversion Leaks</div> </div> <div class="cover-score-item"> <div class="cover-score-number alert">9</div> <div class="cover-score-label">Credibility Gaps</div> </div> <div class="cover-score-item"> <div class="cover-score-number warn">6</div> <div class="cover-score-label">Mobile Risk Areas</div> </div> <div class="cover-score-item"> <div class="cover-score-number">12</div> <div class="cover-score-label">Quick Wins Available</div> </div> </div> </div> <div class="cover-footer"> <div class="cover-footer-left"> READTRAVEL.CO.UK <span class="cover-footer-dot"></span> FULL UX AUDIT 2026 <span class="cover-footer-dot"></span> 6 SECTIONS </div> <div class="cover-confidential">Confidential</div> </div> </div> <!-- ═══════════════════════════════════════════ EXECUTIVE SUMMARY ═══════════════════════════════════════════ --> <div class="section-alt"> <div class="page"> <div class="section-header"> <div class="section-number">00</div> <div class="section-header-text"> <div class="section-eyebrow">Overview</div> <div class="section-title">Executive Summary</div> <div class="section-desc">The state of the site, the scale of the opportunity, and the priority direction.</div> </div> </div> <div class="exec-summary"> <div class="exec-label">Audit overview</div> <div class="exec-pull">"The site has real potential — but it is actively working against itself on three fronts: visible trust errors, structural conversion friction, and a competitor benchmark it currently cannot match."</div> <div class="exec-text">Read Travel offers a clear service proposition and a well-structured fleet. The branding is recognisable and the intent is strong. But what greets visitors today is a homepage where <strong>stat counters display zero</strong>, a testimonial references <strong>a different company entirely</strong> (Atlantis Travels), and the phone number is formatted differently in the same screen — simultaneously. These are not minor polish issues. They are trust-killers operating on every single session, right now.</div> <div class="exec-text">Structurally, a <strong>12-field form</strong> is presented cold, before a single credible trust signal appears. The header disappears on scroll. Buttons lead to 404 pages. Images load as blank grey boxes. There is no cookie consent banner (a UK legal requirement). None of these require weeks of development to fix — most can be resolved in a focused sprint.</div> <div class="exec-text">Strategically, every direct competitor — <strong>TravelForce (4.9★, 1,900+ reviews), Swift Coach Hire, HireGo, iChauffeur</strong> — displays a live Trustpilot widget, a smarter quote flow, and stronger social proof architecture. Read Travel currently shows an unlinked logo and zero verifiable reviews on-page. That gap is the most important thing to close.</div> </div> <div class="stat-strip"> <div class="stat-card c-red"> <div class="stat-number c-red">18</div> <div class="stat-label">UX Issues Found</div> <div class="stat-sub">5 marked Critical</div> </div> <div class="stat-card c-amber"> <div class="stat-number c-amber">10</div> <div class="stat-label">Conversion Leaks</div> <div class="stat-sub">Est. 60–75% form abandonment</div> </div> <div class="stat-card c-teal"> <div class="stat-number c-teal">9</div> <div class="stat-label">Credibility Gaps</div> <div class="stat-sub">3 are legal compliance items</div> </div> <div class="stat-card c-green"> <div class="stat-number c-green">12</div> <div class="stat-label">Quick Wins</div> <div class="stat-sub">All achievable in 5–7 days</div> </div> </div> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ SECTION 01: UI/UX ISSUES ═══════════════════════════════════════════ --> <div class="section-dark"> <div class="page"> <div class="section-header"> <div class="section-number">01</div> <div class="section-header-text"> <div class="section-eyebrow">Site Inspection</div> <div class="section-title">Top 18 UI / UX Issues</div> <div class="section-desc">Each issue mapped to severity, business impact, and a specific fix. Critical items require immediate action regardless of sprint planning.</div> </div> </div> <div class="callout callout-warn"> <span class="callout-icon">⚠</span> <span><strong>Severity key:</strong> CRITICAL = visible right now, actively destroying trust or blocking conversion · HIGH = measurable friction and drop-off · MEDIUM = noticeable friction, lower conversion ceiling</span> </div> <div class="issues-grid"> <!-- CRITICAL ITEMS --> <div class="issue-card sev-critical"> <div class="issue-num">01</div> <div class="issue-body"> <div class="issue-title">Broken stat counters display "0+ Ready Buses" and "0+ Satisfied Customers" on the live homepage</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Animated counters that fail to count are worse than no counters. A visitor sees zero buses and zero customers — the exact opposite of the intended trust message. This is a live bug on every session.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Fix the counter JS scroll-trigger immediately. If unreliable, replace with static verified figures: "50+ Fleet Vehicles · 500+ Journeys Completed." Remove the "+" suffix until numbers are populated.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-critical"><span class="badge-dot-critical"></span>Critical</span></div> </div> <div class="issue-card sev-critical"> <div class="issue-num">02</div> <div class="issue-body"> <div class="issue-title">Testimonial section references "Atlantis Travels" — a completely different business</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Any attentive visitor will question whether they are on the right site, or whether the reviews have been lifted from another company. This is a critical credibility failure that will cause immediate bounces from high-intent visitors.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Remove this testimonial today. Replace all static testimonials with real, attributed reviews from Trustpilot or Google — including reviewer name, date, platform, and star rating.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-critical"><span class="badge-dot-critical"></span>Critical</span></div> </div> <div class="issue-card sev-critical"> <div class="issue-num">03</div> <div class="issue-body"> <div class="issue-title">Phone number formatted inconsistently on the same page: "0798 400 0000" vs "07984 000000"</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Inconsistency signals carelessness. Users who notice may question whether these are the same number. Also breaks NAP (Name, Address, Phone) consistency required for local SEO schema markup.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Standardise to one format across every instance sitewide: header, body, footer, WhatsApp API link, and schema markup. Decide on one convention and apply it globally via a find-and-replace pass.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-critical"><span class="badge-dot-critical"></span>Critical</span></div> </div> <div class="issue-card sev-critical"> <div class="issue-num">04</div> <div class="issue-body"> <div class="issue-title">Multiple buttons and internal links return 404 errors — including fleet page CTAs</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">A 404 page encountered during active browsing ends the session. Users do not retry — they leave. Broken links also signal an unmaintained site and directly harm search engine rankings.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Run a full internal link audit (Screaming Frog or Ahrefs Webmaster Tools — both free). Fix all 404s with 301 redirects or corrected URLs. Set up Google Search Console alerts for future crawl errors.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-critical"><span class="badge-dot-critical"></span>Critical</span></div> </div> <div class="issue-card sev-critical"> <div class="issue-num">05</div> <div class="issue-body"> <div class="issue-title">No GDPR cookie consent banner present — a UK legal requirement under PECR</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Operating a cookie-dropping website without a consent mechanism is a breach of UK PECR regulations and carries ICO enforcement risk. This is a compliance issue, not a design preference.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Implement CookieYes or Cookiebot (both have free tiers) immediately. Configure strictly necessary cookies to load without consent; analytics and marketing cookies require explicit opt-in.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-critical"><span class="badge-dot-critical"></span>Critical</span></div> </div> <!-- HIGH ITEMS --> <div class="issue-card sev-high"> <div class="issue-num">06</div> <div class="issue-body"> <div class="issue-title">Navigation is duplicated three times in the HTML source (desktop, mobile, and sticky nav all rendered simultaneously)</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Bloats page weight, confuses screen readers (multiple identical navigation landmarks), and signals a theme misconfiguration to any technically-aware visitor. Contributes to slower perceived loading.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Consolidate into a single HTML navigation element. Use CSS breakpoints and a single JavaScript toggle to handle responsive states. Never render separate blocks per viewport simultaneously.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <div class="issue-card sev-high"> <div class="issue-num">07</div> <div class="issue-body"> <div class="issue-title">Header is not sticky — the phone number and CTA disappear entirely on scroll</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Users who reach the fleet or pricing section mid-page lose access to the contact mechanism. On mobile this is especially damaging — users scroll rapidly before deciding, and there is no persistent anchor to act.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Implement a sticky header on scroll across all devices. On mobile, reduce it to the phone number (click-to-call) and a single "Get a Quote" CTA button. Use CSS position: sticky — zero performance cost.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <div class="issue-card sev-high"> <div class="issue-num">08</div> <div class="issue-body"> <div class="issue-title">Round Trip "Yes/No" toggle exists, but Return Date and Return Time remain required fields even when "No" is selected</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">One-way enquiries — likely the majority of airport transfer requests — are blocked by mandatory return date fields that do not apply to them. This is a direct form abandonment trigger for one of the most common booking types.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Add JavaScript conditional logic: hide Return Date and Return Time fields completely when "No" is selected for Round Trip. Fields should appear only when "Yes" is active. Standard form behaviour, low-complexity fix.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <div class="issue-card sev-high"> <div class="issue-num">09</div> <div class="issue-body"> <div class="issue-title">Luggage field options appear duplicated — the same five options listed twice within the same form field</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">The duplicated options make the form appear broken or untested. A user who notices this will question the reliability of the entire booking process before submitting a single detail.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Remove the duplicate set immediately. Better: replace the checkbox list with a stepper per luggage size (matching Swift Coach Hire's UX pattern) — it's faster, clearer, and looks intentional.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <div class="issue-card sev-high"> <div class="issue-num">10</div> <div class="issue-body"> <div class="issue-title">Quote area has a duplicated "Call us for further details" block and phone number appearing twice in the same section</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Visual repetition within the primary conversion zone suggests a broken layout or theme misconfiguration. It undermines the professional appearance of exactly the area where trust matters most.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Remove the duplicate block. The quote area should have one clear heading, one phone number, and one WhatsApp link — not the same information presented twice. Clean Elementor block deletion.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <div class="issue-card sev-high"> <div class="issue-num">11</div> <div class="issue-body"> <div class="issue-title">Trustpilot and "Trusted Travel Reviews" logos are unlinked static images — no live rating, no review count</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">An unlinked trust badge is counterproductive. A visitor who wants to verify the rating will click, find nothing, and correctly conclude the badge is decorative — which actively signals that the reviews cannot be verified.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Install the official Trustpilot TrustBox widget (displays live star rating and review count). For Trusted Travel Reviews, link directly to the live profile or remove it entirely.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <div class="issue-card sev-high"> <div class="issue-num">12</div> <div class="issue-body"> <div class="issue-title">Hero headline contains "Any Where" — a grammatical spacing error in the first line a visitor reads</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">The headline sets the credibility tone for the entire page. An error in the very first words signals a lack of attention to detail — a concern when users are evaluating a business responsible for passenger safety.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Correct to "Anywhere" immediately. Then, strategically replace the tagline with a benefit-led headline: e.g. "Licensed UK Minibus & Coach Hire — Fixed Prices, Professional Drivers, Nationwide."</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-high"><span class="badge-dot-high"></span>High</span></div> </div> <!-- MEDIUM ITEMS --> <div class="issue-card sev-medium"> <div class="issue-num">13</div> <div class="issue-body"> <div class="issue-title">Form fields have no placeholder text, no input format hints, and no example values</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Without placeholder text, users must guess expected formats (DD/MM vs MM/DD for dates, exact address format for locations). Every moment of uncertainty increases the probability of abandonment.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Add descriptive placeholders: date fields → "DD/MM/YYYY", location fields → "e.g. Heathrow Terminal 5", passengers → "e.g. 24". Mark optional fields clearly. This is a content edit — no development required.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-medium"><span class="badge-dot-medium"></span>Medium</span></div> </div> <div class="issue-card sev-medium"> <div class="issue-num">14</div> <div class="issue-body"> <div class="issue-title">Images are unoptimised: large file sizes, no WebP conversion, and SVG blank placeholders visible during lazy loading</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Page weight directly impacts Core Web Vitals (LCP score) and user perception of quality. Blank grey boxes where content is expected in the first 2 seconds signal a slow, broken experience — especially on mobile 4G.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Convert all images to WebP format. Set explicit width/height on all img elements to prevent layout shift (CLS). Replace blank SVG placeholders with LQIP (low-quality image previews). Target LCP under 2.5s.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-medium"><span class="badge-dot-medium"></span>Medium</span></div> </div> <div class="issue-card sev-medium"> <div class="issue-num">15</div> <div class="issue-body"> <div class="issue-title">No hover effects on fleet cards, service cards, or CTA buttons — interactive elements do not respond to user interaction</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Hover states are the primary visual affordance that signals "this is clickable." Without them, the site feels static and unfinished. Users in this segment expect a level of polish commensurate with the service price point.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Add CSS transition hover effects: card lift (translateY -4px + box-shadow), button colour darkening on hover, and image zoom on fleet cards. These are pure CSS — zero JS complexity, implementable in hours.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-medium"><span class="badge-dot-medium"></span>Medium</span></div> </div> <div class="issue-card sev-medium"> <div class="issue-num">16</div> <div class="issue-body"> <div class="issue-title">No scroll-triggered section animations — the entire page renders statically with no visual hierarchy progression</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Scroll animations improve time-on-page, guide attention to key conversion areas, and contribute to premium brand perception. All direct competitors in this benchmark use them. Their absence signals an older, less-maintained build.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Implement AOS (Animate On Scroll) library — 6KB, works with WordPress/Elementor. Apply fade-in to stat cards, slide-in to fleet cards, reveal on testimonials. Avoid heavy JS animations that damage mobile performance.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-medium"><span class="badge-dot-medium"></span>Medium</span></div> </div> <div class="issue-card sev-medium"> <div class="issue-num">17</div> <div class="issue-body"> <div class="issue-title">Fleet page naming is inconsistent across navigation, cards, and URLs ("12-17 Seater" vs "12 to 17 Seater Hire" vs "12-17 Seater Minibus")</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Naming inconsistency creates SEO keyword fragmentation — the same vehicle type competes against itself across different URL patterns. It also confuses users who see different names for what appears to be the same product.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Standardise on one naming convention sitewide: e.g. "12–17 Seat Minibus." Apply consistently to nav labels, card headings, page H1 titles, URL slugs, and internal links.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-medium"><span class="badge-dot-medium"></span>Medium</span></div> </div> <div class="issue-card sev-critical"> <div class="issue-num">18</div> <div class="issue-body"> <div class="issue-title">Driver application popup requests DBS certificates and PCV licence uploads with no GDPR data handling notice in the popup</div> <div class="issue-details"> <div> <div class="issue-detail-label impact">Business Impact</div> <div class="issue-detail-text">Collecting sensitive documents without an explicit data handling notice at the point of collection may breach UK GDPR Article 13. Candidates are unlikely to upload sensitive personal documents into a popup with no data policy visible.</div> </div> <div> <div class="issue-detail-label fix">Recommended Fix</div> <div class="issue-detail-text">Add a data processing notice above the upload fields in the popup. Move to a dedicated /drivers or /careers page with a full GDPR transparency statement and link to the Privacy Policy before any document upload fields.</div> </div> </div> </div> <div class="issue-severity"><span class="badge badge-critical"><span class="badge-dot-critical"></span>Critical</span></div> </div> </div> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ SECTION 02: CONVERSION LEAKS ═══════════════════════════════════════════ --> <div class="section-alt"> <div class="page"> <div class="section-header"> <div class="section-number">02</div> <div class="section-header-text"> <div class="section-eyebrow">Conversion Analysis</div> <div class="section-title">Top 10 Conversion Leaks</div> <div class="section-desc">Every point where an interested visitor chose to leave instead of enquire — with a specific fix for each one.</div> </div> </div> <div class="callout callout-info"> <span class="callout-icon">◈</span> <span>A conversion leak is any moment where a visitor who intended to enquire, call, or book chose not to — because of friction, uncertainty, or missing information. These are operating on every session, right now.</span> </div> <div class="leaks-grid"> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">01</div> <div class="leak-title">12-Field Cold Form — Presented Before Any Trust Is Established</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> Twelve mandatory fields shown to a first-time visitor who has not yet been given a reason to trust the business. Industry data shows each additional form field reduces completion. At 12 fields before a single trust signal, estimated abandonment is 60–75% of form starters. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Rebuild as a 3-step progressive form: Step 1 (route), Step 2 (trip details), Step 3 (contact). Show a progress indicator. This mirrors how customers think and builds commitment step-by-step. Swift Coach Hire's journey-type tabs are the reference UX. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">02</div> <div class="leak-title">No Instant or Indicative Pricing Shown Anywhere</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> The most common reason users abandon a service enquiry is price uncertainty. When there's no ballpark figure before a 12-field form commitment, users go to a competitor who will show them one. Swift, iChauffeur, and Sixt all provide pricing context. Read Travel provides none. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Add vehicle-level starting prices to fleet cards ("9-seater from £199"). Add a basic price estimator widget. Even indicative pricing reduces abandonment significantly — it's not about precision, it's about anchoring expectations. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">03</div> <div class="leak-title">No Live Trustpilot Widget — Only a Static Unlinked Logo</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> TravelForce (4.9★, 1,900+ reviews), Swift Coach Hire (4.4★, 118 reviews), and HireGo (4.6★, 169 reviews) all show live, verifiable ratings. Read Travel's unlinked logo signals that the rating cannot be verified — which is perceived as worse than having no rating at all. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Install the official Trustpilot TrustBox widget on the homepage — in the hero and near the quote form. Simultaneously launch a post-journey review request sequence to build review volume toward 50–100 verified reviews within 90 days. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">04</div> <div class="leak-title">No Persistent CTA or Sticky Header on Scroll</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> Once a user scrolls past the hero area, there is no persistent access to the phone number or quote CTA. Users who reach the fleet or pricing sections — where intent is highest — have no immediate action anchor. They exit rather than scroll back up. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Sticky header across all devices — phone number (click-to-call) + "Get a Quote" button. On mobile, reduce to a phone icon and WhatsApp icon in a bottom-fixed bar. This keeps the conversion path open at every scroll depth. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">05</div> <div class="leak-title">No WhatsApp Floating Button on Mobile</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> The WhatsApp number is buried in the quote section. For group travel enquiries — which often involve several questions before committing — WhatsApp is the preferred channel for a large proportion of UK mobile users. Not surfacing it is leaving enquiries unresolved. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Fixed WhatsApp floating button (bottom-right) on all pages, mobile only. Pre-populate the message: "Hi, I'd like a quote for..." TravelForce uses this pattern. Can be implemented as a 10-line JS snippet or a free WordPress plugin. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">06</div> <div class="leak-title">No Post-Form Confirmation or Response Expectation</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> After submitting the form, there is no confirmation of what happens next — no "We'll be in touch within X hours," no next step, no alternative contact. This creates uncertainty and reduces the user's confidence that their enquiry has been received. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Dedicated thank-you page: confirms receipt, states response SLA ("We'll call you back within 2 business hours"), provides the direct phone number, and includes a brief "What happens next" explanation. Builds trust even after the form submit. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">07</div> <div class="leak-title">Broken Internal Links — 404 Pages During Active Browsing</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> A user who encounters a 404 while clicking a fleet card or service link will not retry — they will leave. Broken links are a direct session-ending conversion killer, and they are currently present across the site. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Full internal link audit (Screaming Frog free version). Fix all 404s with 301 redirects or corrected URLs. Test every fleet card CTA, every footer link, every button. Set Google Search Console to alert on new crawl errors. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">08</div> <div class="leak-title">Fleet Pages Have No Pricing, Amenities, or Booking CTA</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> Fleet pages are the highest-intent pages on the site. Users arriving on a "29 Seater Coach" page have already decided they need group travel — they just need to be able to act. Currently, there is no starting price, no amenity list, and no direct quote CTA on any fleet page. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Add to every fleet page: starting price range, amenity icon strip (AC, WiFi, luggage capacity, reclining seats), a seating layout diagram, and a prominent "Quote This Vehicle" CTA that pre-populates the relevant passenger count. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">09</div> <div class="leak-title">No Urgency or Availability Signals Anywhere</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> Coach hire is genuinely capacity-constrained. Availability varies by date and season — yet the site presents all vehicles as always available. Without any signal of constraint, users feel no reason to act now rather than come back later (and forget to). </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Surface genuine constraints: "Peak season bookings typically close 4 weeks ahead" or "Limited vehicles for summer weekends." Only use real data — never manufactured scarcity. Even a factual availability note creates decision momentum. </div> </div> <div class="leak-card"> <div class="leak-card-header"> <div class="leak-num">10</div> <div class="leak-title">No Exit-Intent Capture or Email Re-engagement Mechanism</div> </div> <div class="leak-divider"></div> <div class="leak-why"> <span class="leak-label why">Why it's costing you</span> Visitors who browse and leave without enquiring are permanently lost. There is no exit-intent popup, no lead magnet, no email capture, and no retargeting pixel visible. Every bounced visitor is wasted acquisition cost. </div> <div class="leak-divider"></div> <div class="leak-fix"> <span class="leak-label fix">Fix</span> Exit-intent popup: "Before you go — check availability for your date" with a 2-field mini form (date + passenger count). Connect to a 5-email nurture sequence. Install Meta/Google retargeting pixel to re-serve ads to non-converting site visitors. </div> </div> </div> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ SECTION 03: CREDIBILITY CHECKLIST ═══════════════════════════════════════════ --> <div class="section-dark"> <div class="page"> <div class="section-header"> <div class="section-number">03</div> <div class="section-header-text"> <div class="section-eyebrow">Trust Architecture</div> <div class="section-title">Credibility Checklist</div> <div class="section-desc">15 trust signals audited across compliance, social proof, regulatory visibility, and brand transparency.</div> </div> </div> <div class="callout callout-info"> <span class="callout-icon">◈</span> <span><strong>Legend:</strong> ✅ Present and adequate · ⚠️ Present but incomplete or broken · ❌ Missing entirely</span> </div> <table class="cred-table"> <thead> <tr> <th style="width:72px">Status</th> <th>Credibility Signal</th> <th>Current State</th> <th>Action Required</th> </tr> </thead> <tbody> <tr> <td><span class="badge status-ok">✅</span></td> <td><span class="cred-item-name">Terms & Conditions Page</span></td> <td class="cred-state">Page exists and is linked in the footer.</td> <td class="cred-action">Review annually. Ensure cancellation policy is explicit and findable within 2 clicks.</td> </tr> <tr> <td><span class="badge status-ok">✅</span></td> <td><span class="cred-item-name">Privacy Policy Page</span></td> <td class="cred-state">Page exists and is linked in footer.</td> <td class="cred-action">Add cookie consent banner immediately. Link to Privacy Policy from all data-capture forms.</td> </tr> <tr> <td><span class="badge status-ok">✅</span></td> <td><span class="cred-item-name">Physical Address in Footer</span></td> <td class="cred-state">108 Cranbrook Road, Ilford IG1 4LZ — present.</td> <td class="cred-action">Add Google Maps embed on Contact page. Implement LocalBusiness schema with this address.</td> </tr> <tr> <td><span class="badge status-warn">⚠️</span></td> <td><span class="cred-item-name">Phone Number Consistency</span></td> <td class="cred-state">Present but formatted differently across the same page (0798 400 0000 vs 07984 000000).</td> <td class="cred-action">Standardise to one format everywhere — header, body, footer, WhatsApp link, schema markup.</td> </tr> <tr> <td><span class="badge status-warn">⚠️</span></td> <td><span class="cred-item-name">Trustpilot Presence</span></td> <td class="cred-state">Logo displayed as static SVG. No star rating, no review count, no link to profile.</td> <td class="cred-action">Install official Trustpilot TrustBox widget. Begin post-journey review collection campaign immediately.</td> </tr> <tr> <td><span class="badge status-warn">⚠️</span></td> <td><span class="cred-item-name">Trusted Travel Reviews Badge</span></td> <td class="cred-state">Logo displayed as SVG image. No link to the live profile, no rating shown.</td> <td class="cred-action">Either link to the live verified profile or remove. An unlinked badge has zero trust value and signals decoration.</td> </tr> <tr> <td><span class="badge status-warn">⚠️</span></td> <td><span class="cred-item-name">Operating History ("Since 2019")</span></td> <td class="cred-state">Mentioned in About section copy only — not surfaced in hero or trust bar.</td> <td class="cred-action">Promote "6 Years Serving UK Passengers" in the hero trust strip. Years of operation = direct credibility signal.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">Live Trustpilot Reviews Widget</span></td> <td class="cred-state">No live widget anywhere on the site. Review count and rating completely invisible to visitors.</td> <td class="cred-action">Install TrustBox widget on homepage. Target 50+ verified reviews within 90 days via post-journey email sequence.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">DVSA Operator Licence Number</span></td> <td class="cred-state">Not mentioned anywhere on the site.</td> <td class="cred-action">Display PSV operator licence number in footer and on About page. Expected by corporate buyers, schools, and event planners.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">Public Liability Insurance Declaration</span></td> <td class="cred-state">Not mentioned. For group passenger transport, this is expected by event organisers and corporates.</td> <td class="cred-action">State minimum coverage level (£5m+) and insurer name in footer or dedicated Why Us section.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">ICO / Data Protection Registration</span></td> <td class="cred-state">Not visible. Any UK business processing personal data must register with the ICO.</td> <td class="cred-action">Confirm ICO registration is current (legally required). Display registration number in Privacy Policy footer.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">GDPR Cookie Consent Banner</span></td> <td class="cred-state">No consent mechanism detected on page load.</td> <td class="cred-action">Implement CookieYes or Cookiebot immediately. Legal requirement under UK PECR — not optional.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">Named Team or Driver Profiles</span></td> <td class="cred-state">No photos, names, or bios of any team member appear anywhere on the site.</td> <td class="cred-action">Add founder/operations manager photo and name on About page. Humanising the brand improves high-value booking conversion significantly.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">Companies House Registration Number</span></td> <td class="cred-state">Not displayed in footer or About page.</td> <td class="cred-action">Add Companies House number to footer alongside address. Standard UK business practice that signals legitimacy.</td> </tr> <tr> <td><span class="badge status-miss">❌</span></td> <td><span class="cred-item-name">Google Reviews Integration</span></td> <td class="cred-state">No Google Business review widget or badge visible on the site.</td> <td class="cred-action">Add Google Reviews widget or a star rating badge linking to the Google Business profile. Dual-platform social proof is the market standard.</td> </tr> </tbody> </table> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ SECTION 04: MOBILE RISKS ═══════════════════════════════════════════ --> <div class="section-alt"> <div class="page"> <div class="section-header"> <div class="section-number">04</div> <div class="section-header-text"> <div class="section-eyebrow">Mobile Experience</div> <div class="section-title">Mobile-First Risk Assessment</div> <div class="section-desc">Over 65% of UK coach hire searches originate from mobile. These issues are conversion-critical, not cosmetic.</div> </div> </div> <div class="mobile-grid"> <div class="mobile-card"> <div class="mobile-icon">📌</div> <div class="mobile-card-title">Non-Sticky Header</div> <div class="mobile-card-problem">Scrolling past the hero removes all access to the phone number and quote CTA. On mobile, users scroll rapidly before deciding — and the action mechanism disappears with the header.</div> <div class="mobile-card-fix">Sticky header across all screen sizes. On mobile, strip to phone icon (click-to-call) + a WhatsApp icon in a bottom-fixed action bar. CSS position: sticky — no performance cost.</div> </div> <div class="mobile-card"> <div class="mobile-icon">📅</div> <div class="mobile-card-title">Manual Date/Time Input</div> <div class="mobile-card-problem">Date fields use text prompts ("DD dash MM dash YYYY") instead of native HTML5 date pickers. On iOS and Android, manual date text entry is error-prone and significantly slower than platform-native date wheels.</div> <div class="mobile-card-fix">Replace with <input type="date"> and <input type="time"> — triggers native mobile pickers automatically. Alternatively use Flatpickr (16KB) for consistent cross-platform experience.</div> </div> <div class="mobile-card"> <div class="mobile-icon">👆</div> <div class="mobile-card-title">Tap Target Sizes</div> <div class="mobile-card-problem">Navigation elements, the phone number link, and the popup trigger are in close proximity at the top of the screen. On 360–390px devices these likely fall below Google's recommended 48×48px minimum with 8px spacing.</div> <div class="mobile-card-fix">Audit all interactive elements for minimum 44px touch height. Increase padding on nav items, CTA buttons, and phone links. Test on a real Android device at 360px viewport width before launch.</div> </div> <div class="mobile-card"> <div class="mobile-icon">🖼️</div> <div class="mobile-card-title">Image Load Experience</div> <div class="mobile-card-problem">Blank SVG placeholders create a jarring grey-box flash during scroll on mobile. Without WebP conversion, image payloads are unnecessarily large on slower 4G connections, dragging Largest Contentful Paint scores into the "poor" range.</div> <div class="mobile-card-fix">Convert all images to WebP. Add explicit width/height attributes. Replace SVG blanks with LQIP. Target LCP under 2.5s on a mid-range Android device on 4G — measurable via PageSpeed Insights.</div> </div> <div class="mobile-card"> <div class="mobile-icon">💬</div> <div class="mobile-card-title">WhatsApp CTA Buried</div> <div class="mobile-card-problem">WhatsApp is linked in the quote section only — not surfaced as a persistent mobile contact option. For urgent or complex group enquiries, WhatsApp is the lowest-friction channel for the majority of UK mobile users.</div> <div class="mobile-card-fix">Fixed WhatsApp bubble (bottom-right) visible on all pages on mobile. Pre-fill opening message with "Hi, I'd like a quote for..." to reduce typing effort. Near-zero implementation cost.</div> </div> <div class="mobile-card"> <div class="mobile-icon">📐</div> <div class="mobile-card-title">Layout & Spacing on Narrow Screens</div> <div class="mobile-card-problem">Copy-heavy sections (maintenance checklist, Why Choose Us grid) appear to use the same desktop layout on mobile — dense text at small sizes on a narrow viewport without adequate line-height causes reading fatigue and early scroll exit.</div> <div class="mobile-card-fix">Set mobile line-height to minimum 1.6. Break the maintenance checklist into a collapsible accordion. Convert the Why Choose Us 6-column grid to a 2-column stacked layout on mobile screens.</div> </div> </div> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ SECTION 05: QUICK WINS ═══════════════════════════════════════════ --> <div class="section-dark"> <div class="page"> <div class="section-header"> <div class="section-number">05</div> <div class="section-header-text"> <div class="section-eyebrow">Sprint Roadmap</div> <div class="section-title">Quick Wins — 5 to 7 Days</div> <div class="section-desc">Low effort, immediate impact. No major development required. Estimated combined conversion uplift: 15–25%.</div> </div> </div> <div class="table-header-row"> <div class="th">#</div> <div class="th">Action</div> <div class="th">Expected Outcome</div> <div class="th">Effort</div> <div class="th">Who / Tool</div> </div> <div class="wins-grid"> <div class="win-row"> <div class="win-col win-num">W01</div> <div class="win-col win-action"><span class="win-action-title">Fix broken stat counters or replace with static verified numbers</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Removes the most visible trust-killer on the homepage from every session</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Developer / Elementor</span></div> </div> <div class="win-row"> <div class="win-col win-num">W02</div> <div class="win-col win-action"><span class="win-action-title">Remove the "Atlantis Travels" testimonial and replace with a real attributed review</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Eliminates a credibility-destroying error causing immediate bounce for attentive visitors</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">CMS editor</span></div> </div> <div class="win-row"> <div class="win-col win-num">W03</div> <div class="win-col win-action"><span class="win-action-title">Standardise phone number to one format across every instance sitewide</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Removes user doubt, improves NAP consistency for local SEO, signals professional maintenance</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Find & replace / Dev</span></div> </div> <div class="win-row"> <div class="win-col win-num">W04</div> <div class="win-col win-action"><span class="win-action-title">Fix Round Trip conditional logic — hide return fields when "No" is selected</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Unblocks one-way enquiries (likely the majority of airport transfers) from completing the form</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Developer (JS conditional)</span></div> </div> <div class="win-row"> <div class="win-col win-num">W05</div> <div class="win-col win-action"><span class="win-action-title">Remove duplicated luggage field options (same 5 options currently listed twice)</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Fixes a visible form bug that signals an untested booking process</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Form editor / Elementor</span></div> </div> <div class="win-row"> <div class="win-col win-num">W06</div> <div class="win-col win-action"><span class="win-action-title">Remove the duplicate "Call us for details" block in the quote area</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Cleans up the primary conversion zone. Duplicate blocks signal layout errors in the most important section</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Elementor layout edit</span></div> </div> <div class="win-row"> <div class="win-col win-num">W07</div> <div class="win-col win-action"><span class="win-action-title">Install GDPR-compliant cookie consent banner (CookieYes or Cookiebot free tier)</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Addresses a live legal compliance gap under UK PECR — should already be in place</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">WordPress plugin</span></div> </div> <div class="win-row"> <div class="win-col win-num">W08</div> <div class="win-col win-action"><span class="win-action-title">Install official Trustpilot TrustBox widget on the homepage near the quote form</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Replaces a decorative unlinked logo with live, verifiable social proof. Directly impacts conversion trust</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Trustpilot widget embed</span></div> </div> <div class="win-row"> <div class="win-col win-num">W09</div> <div class="win-col win-action"><span class="win-action-title">Add fixed WhatsApp floating button (bottom-right) on mobile across all pages</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Opens the lowest-friction conversion channel for the 65%+ of visitors on mobile</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">10-line JS snippet / Plugin</span></div> </div> <div class="win-row"> <div class="win-col win-num">W10</div> <div class="win-col win-action"><span class="win-action-title">Make the header sticky on scroll across all screen sizes</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Maintains persistent access to phone and CTA throughout the browsing journey — closes the action gap on scroll</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">CSS position: sticky</span></div> </div> <div class="win-row"> <div class="win-col win-num">W11</div> <div class="win-col win-action"><span class="win-action-title">Add descriptive placeholder text to all form fields with format hints and examples</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Reduces input errors and cognitive friction at the most critical conversion step</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">Form editor / Elementor</span></div> </div> <div class="win-row"> <div class="win-col win-num">W12</div> <div class="win-col win-action"><span class="win-action-title">Fix "Any Where" typo to "Anywhere" in the hero headline</span></div> <div class="win-col win-outcome"><span class="win-outcome-text">Removes a grammar error from the first line every visitor reads. Small fix, direct credibility implication</span></div> <div class="win-col win-effort"><span class="effort-badge effort-low">Low</span></div> <div class="win-col win-owner"><span class="win-owner-text">CMS content edit</span></div> </div> </div> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ SECTION 06: COMPETITOR BENCHMARK ═══════════════════════════════════════════ --> <div class="section-dark"> <div class="page"> <div class="section-header"> <div class="section-number">06</div> <div class="section-header-text"> <div class="section-eyebrow">Market Positioning</div> <div class="section-title">Competitor Benchmark</div> <div class="section-desc">9 direct competitors analysed — positioning, UX patterns, and what Read Travel must match or beat. Data from live site review, 27<small>th</small> February 2026.</div> </div> </div> <div class="comp-grid"> <!-- READ TRAVEL (featured) --> <div class="comp-card featured"> <div class="comp-header"> <div class="comp-name">Read Travel</div> <div class="comp-url">readtravel.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">—</div> <div> <div class="comp-review-count" style="color:var(--red)">No live Trustpilot widget</div> <div class="comp-review-count">Logo only — unlinked, no rating shown</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No live reviews widget</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No instant pricing</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No live chat</span></div> <div class="comp-feature"><span class="feat-dot feat-part"></span><span class="feat-label">WhatsApp (buried in form section)</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Price-match "Beat My Quote" promise</span></div> </div> <div class="comp-standout warn">Highest opportunity site in this benchmark — most issues are solvable within 30 days</div> </div> <!-- SWIFT COACH HIRE --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">Swift Coach Hire</div> <div class="comp-url">swiftcoachhire.com</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★</div> <div> <div class="comp-score">4.4</div> <div class="comp-review-count">118 reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live Trustpilot widget</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Quote form above the fold</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Journey type tabs: Single / Return / Tour</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Luggage steppers (not checkboxes)</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No instant pricing</span></div> </div> <div class="comp-standout">Best quote form UX in this benchmark. Journey type tabs eliminate irrelevant fields immediately — the reference design for Read Travel's form rebuild.</div> </div> <!-- TRAVELFORCE --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">TravelForce</div> <div class="comp-url">travelforce.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★★</div> <div> <div class="comp-score">4.9</div> <div class="comp-review-count">1,900+ reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Dominant Trustpilot presence (1,900+)</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">WhatsApp persistent in header</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Vehicle photos, premium VIP options</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Hire type selector before form</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No instant pricing shown</span></div> </div> <div class="comp-standout">The social proof benchmark for this category. Social proof architecture before the form — then the form. Read Travel does the reverse. 1,900+ reviews is the target direction.</div> </div> <!-- HIREGO --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">HireGo</div> <div class="comp-url">hirego.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★</div> <div> <div class="comp-score">4.6</div> <div class="comp-review-count">169 reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live Trustpilot widget</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">"We Have Worked With" logo strip</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Coca-Cola, Embassy, media brands</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">FAQ section removes booking objections</span></div> <div class="comp-feature"><span class="feat-dot feat-part"></span><span class="feat-label">Partial live chat (enquiry bot)</span></div> </div> <div class="comp-standout">Strongest B2B trust signal in this benchmark: named corporate clients (Coca-Cola, Colombian Embassy). Read Travel needs a "Trusted By" section with real client names to compete for institutional bookings.</div> </div> <!-- ICHAUFFEUR --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">iChauffeur</div> <div class="comp-url">ichauffeur.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★★</div> <div> <div class="comp-score">4.8</div> <div class="comp-review-count">400+ reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">True instant pricing (live booking engine)</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Native mobile app (iOS + Android)</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Dedicated Safety page with driver vetting</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live chat support</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Single CTA: "Get a Price & Book"</span></div> </div> <div class="comp-standout">Sets the ceiling for this category. Instant live pricing, full booking engine, driver vetting transparency, and native app. The directional benchmark for Read Travel's 12–18 month vision.</div> </div> <!-- SIXT UK --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">Sixt UK</div> <div class="comp-url">sixt.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★</div> <div> <div class="comp-score">4.0</div> <div class="comp-review-count">2,000+ reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Full online booking engine</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live prices shown throughout</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Brand trust at national scale</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live chat + phone support</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Compact date/location/vehicle widget</span></div> </div> <div class="comp-standout">Brand equity and booking engine maturity are unmatched in this set. Sets the standard for what a fully commercial booking flow looks like. Aspirational benchmark for transactional completeness.</div> </div> <!-- H&H VAN HIRE --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">H&H Van Hire</div> <div class="comp-url">hhvanhire.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★</div> <div> <div class="comp-score">4.2</div> <div class="comp-review-count">200+ reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Multiple branch numbers in header</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">ULEZ compliance badge visible</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Price match guarantee featured prominently</span></div> <div class="comp-feature"><span class="feat-dot feat-part"></span><span class="feat-label">Partial pricing on category pages</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Clear insurance inclusion USPs</span></div> </div> <div class="comp-standout">Strong operational trust signals: ULEZ compliance, insurance inclusion, multiple branch contacts. Demonstrates that transparency about vehicle standards converts at mid-market.</div> </div> <!-- KENDALL CARS --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">Kendall Cars</div> <div class="comp-url">kendallcars.com</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★</div> <div> <div class="comp-score">3.8</div> <div class="comp-review-count">80+ reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live reviews widget</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No journey-type logic in form</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No instant pricing</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No live chat</span></div> <div class="comp-feature"><span class="feat-dot feat-part"></span><span class="feat-label">Local brand recognition in their area</span></div> </div> <div class="comp-standout warn">Limited digital conversion optimisation. Not a primary competitive threat — but even this level has a live reviews widget. That's the floor Read Travel needs to clear immediately.</div> </div> <!-- INDIGO CAR HIRE --> <div class="comp-card"> <div class="comp-header"> <div class="comp-name">Indigo Car Hire</div> <div class="comp-url">indigocarhire.co.uk</div> </div> <div class="comp-rating"> <div class="comp-stars">★★★★</div> <div> <div class="comp-score">4.1</div> <div class="comp-review-count">150+ reviews · Live widget</div> </div> </div> <div class="comp-features"> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Live reviews widget</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Simple compact booking widget</span></div> <div class="comp-feature"><span class="feat-dot feat-part"></span><span class="feat-label">Partial pricing on category pages</span></div> <div class="comp-feature"><span class="feat-dot feat-no"></span><span class="feat-label dim">No live chat</span></div> <div class="comp-feature"><span class="feat-dot feat-yes"></span><span class="feat-label">Cleaner form UX than Read Travel</span></div> </div> <div class="comp-standout">Cleaner form UX than Read Travel despite smaller scale. Key lesson: simplicity outperforms comprehensiveness in service booking forms. Fewer fields, one clear next step.</div> </div> </div> <div class="callout callout-info"> <span class="callout-icon">◈</span> <span><strong>Key finding:</strong> Read Travel is the only site in this 9-competitor benchmark without a live, linked Trustpilot widget on its homepage. This is the single highest-priority gap to close — it costs nothing except implementation time and a commitment to collecting reviews systematically after every booking.</span> </div> </div> </div> <div class="divider"></div> <!-- ═══════════════════════════════════════════ PRIORITY MATRIX ═══════════════════════════════════════════ --> <div class="section-alt"> <div class="page"> <div class="priority-matrix"> <div class="priority-matrix-header"> <span style="font-size:24px">🗺</span> <div class="priority-matrix-title">Recommended Priority Action Order</div> </div> <div class="priority-track"> <div class="priority-col"> <div class="priority-col-header"> <div class="priority-col-dot" style="background:var(--red)"></div> <div> <div class="priority-col-label" style="color:var(--red)">This Week</div> <div class="priority-col-timeframe">Days 1–7</div> </div> </div> <div class="priority-item">Fix broken stat counters or replace with static numbers</div> <div class="priority-item">Remove Atlantis Travels testimonial immediately</div> <div class="priority-item">Standardise phone number sitewide</div> <div class="priority-item">Fix Round Trip conditional logic (one-way form)</div> <div class="priority-item">Remove duplicated luggage field options</div> <div class="priority-item">Remove duplicate "Call us" block in quote area</div> <div class="priority-item">Install GDPR cookie consent banner</div> <div class="priority-item">Install live Trustpilot widget</div> <div class="priority-item">Add WhatsApp floating button (mobile)</div> <div class="priority-item">Make header sticky on scroll</div> <div class="priority-item">Correct "Any Where" → "Anywhere" in headline</div> <div class="priority-item">Audit and fix all 404 broken links</div> </div> <div class="priority-col"> <div class="priority-col-header"> <div class="priority-col-dot" style="background:var(--amber)"></div> <div> <div class="priority-col-label" style="color:var(--amber)">Week 2</div> <div class="priority-col-timeframe">Sprint 2 · Dev + content</div> </div> </div> <div class="priority-item">Add starting prices to all fleet cards</div> <div class="priority-item">Add form placeholder text and input hints</div> <div class="priority-item">Add DVSA licence + insurance badge to footer</div> <div class="priority-item">Implement LocalBusiness schema markup (JSON-LD)</div> <div class="priority-item">Add Google Maps embed on Contact page</div> <div class="priority-item">Add Companies House number to footer</div> <div class="priority-item">Add CSS hover effects to all cards and buttons</div> <div class="priority-item">Implement AOS scroll animations (6KB library)</div> <div class="priority-item">Replace SVG blank placeholders with LQIP</div> <div class="priority-item">Convert all images to WebP format</div> </div> <div class="priority-col"> <div class="priority-col-header"> <div class="priority-col-dot" style="background:var(--teal)"></div> <div> <div class="priority-col-label" style="color:var(--teal)">Week 3,4</div> <div class="priority-col-timeframe">Strategic · Design + dev</div> </div> </div> <div class="priority-item">Rebuild quote form as 3-step progressive wizard</div> <div class="priority-item">Launch route-specific landing pages (4 priority routes)</div> <div class="priority-item">Rebuild all fleet pages with pricing + amenity icons</div> <div class="priority-item">Launch post-journey review collection automation</div> <div class="priority-item">Add team profiles to About page</div> <div class="priority-item">Integrate live chat (Tidio free tier)</div> <div class="priority-item">Build "Organisations We've Transported" trust section</div> <div class="priority-item">Add price estimator widget to homepage</div> <div class="priority-item">Mobile rebuild: native inputs, thumb-zone layout</div> <div class="priority-item">Build exit-intent email capture + nurture sequence</div> </div> </div> </div> </div> </div> <!-- FOOTER --> <div class="footer"> <div class="footer-left">READTRAVEL.CO.UK · UX AUDIT 27<small>th</small> FEB 2026 · CONFIDENTIAL</div> <div class="footer-right" style="font-size:13px; color: var(--muted)">Prepared for internal use only. All competitor data from live site review, 27<small>th</small> February 2026.</div> </div> </body> </html>
[-] website_proposal.html
[edit]
[-] index.html
[edit]
[-] .htaccess
[edit]
[+]
..
[-] website_audit.html
[edit]