{"id":42963,"date":"2026-07-07T10:04:41","date_gmt":"2026-07-07T10:04:41","guid":{"rendered":"https:\/\/realesta.co\/inprojects\/lbbnew\/?page_id=42963"},"modified":"2026-07-07T10:04:42","modified_gmt":"2026-07-07T10:04:42","slug":"linkedin-onboarding","status":"publish","type":"page","link":"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding","title":{"rendered":"Linkedin Onboarding"},"content":{"rendered":"\n<style>\n  :root {\n    --purple: #6D08BE;\n    --purple-deep: #4A0580;\n    --gold: #FFB703;\n    --red: #E8033A;\n    --magenta: #DD1286;\n    --teal: #0095A0;\n    --navy: #011A6B;\n    --bg: #FAF9FC;\n    --card: #FFFFFF;\n    --border: #E4DFF0;\n    --text: #241B33;\n    --text-dim: #6B6478;\n    --green: #0E9F6E;\n    --amber: #B98900;\n    --space-xs: 4px;\n    --space-sm: 8px;\n    --space-md: 16px;\n    --space-lg: 24px;\n    --space-xl: 40px;\n  }\n  * { box-sizing: border-box; }\n  body {\n    margin: 0;\n    font-family: 'Inter', -apple-system, sans-serif;\n    background: var(--bg);\n    color: var(--text);\n    line-height: 1.5;\n  }\n  .grain {\n    position: fixed; inset: 0; pointer-events: none; z-index: 1000;\n    opacity: 0.025;\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\");\n  }\n  header {\n    background: linear-gradient(120deg, var(--purple) 0%, var(--purple-deep) 65%, var(--navy) 100%);\n    color: white;\n    padding: 36px 24px 30px;\n    position: relative;\n  }\n  header::after {\n    content: \"\";\n    position: absolute; right: -60px; top: -60px;\n    width: 220px; height: 220px; border-radius: 50%;\n    background: radial-gradient(circle, rgba(255,183,3,0.35), transparent 70%);\n  }\n  .header-inner { max-width: 880px; margin: 0 auto; position: relative; }\n  .eyebrow {\n    font-family: 'Montserrat', sans-serif;\n    font-size: 12px; font-weight: 700; letter-spacing: 1.5px;\n    color: var(--gold); text-transform: uppercase; margin-bottom: 10px;\n  }\n  h1 {\n    font-family: 'Montserrat', sans-serif;\n    font-size: clamp(22px, 4vw, 30px);\n    font-weight: 800; margin: 0 0 8px;\n  }\n  .sub { font-size: 14px; color: rgba(255,255,255,0.82); max-width: 620px; }\n  .progress-wrap {\n    max-width: 880px; margin: 22px auto 0; background: rgba(255,255,255,0.12);\n    border-radius: 8px; height: 8px; overflow: hidden;\n  }\n  .progress-bar { height: 100%; width: 0%; background: linear-gradient(90deg, var(--gold), #FFD666); transition: width 0.4s cubic-bezier(0.25,1,0.5,1); }\n  .progress-label { max-width: 880px; margin: 8px auto 0; font-size: 12px; color: rgba(255,255,255,0.75); display: flex; justify-content: space-between; }\n\n  main { max-width: 880px; margin: 0 auto; padding: 32px 24px 100px; }\n\n  .section {\n    background: var(--card);\n    border: 1px solid var(--border);\n    border-radius: 14px;\n    padding: 24px;\n    margin-bottom: 20px;\n    opacity: 0;\n    transform: translateY(10px);\n    animation: reveal 0.5s cubic-bezier(0.25,1,0.5,1) forwards;\n  }\n  @keyframes reveal { to { opacity: 1; transform: translateY(0); } }\n\n  .section-head { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }\n  .section-num {\n    width: 30px; height: 30px; border-radius: 8px;\n    background: linear-gradient(135deg, var(--purple), var(--magenta));\n    color: white; font-family: 'Montserrat', sans-serif; font-weight: 700;\n    display: flex; align-items: center; justify-content: center; font-size: 13px;\n    flex-shrink: 0;\n  }\n  .section-title { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 17px; }\n  .section-desc { font-size: 13px; color: var(--text-dim); margin: 6px 0 18px 42px; }\n\n  .item {\n    display: grid;\n    grid-template-columns: 1fr auto;\n    gap: 10px 16px;\n    align-items: center;\n    padding: 12px 14px;\n    border-radius: 10px;\n    border: 1px solid var(--border);\n    margin-bottom: 10px;\n    transition: border-color 0.2s;\n  }\n  .item.has-detail { grid-template-columns: 1fr; }\n  .item-label { font-size: 14px; font-weight: 500; }\n  .item-label .req { color: var(--red); margin-left: 4px; }\n\n  .toggle-group { display: flex; gap: 6px; flex-wrap: wrap; }\n  .toggle-btn {\n    font-family: 'Inter', sans-serif;\n    font-size: 12px; font-weight: 600;\n    padding: 7px 12px; border-radius: 20px;\n    border: 1.5px solid var(--border);\n    background: white; color: var(--text-dim);\n    cursor: pointer; transition: all 0.15s;\n    white-space: nowrap;\n  }\n  .toggle-btn:hover { border-color: var(--purple); }\n  .toggle-btn.active-ready { background: var(--green); border-color: var(--green); color: white; }\n  .toggle-btn.active-provide { background: var(--amber); border-color: var(--amber); color: white; }\n  .toggle-btn.active-na { background: var(--text-dim); border-color: var(--text-dim); color: white; }\n\n  .detail-row { margin-top: 10px; }\n  textarea, input[type=text], input[type=email], select {\n    width: 100%; padding: 10px 12px; border-radius: 8px;\n    border: 1.5px solid var(--border); font-family: 'Inter', sans-serif;\n    font-size: 13.5px; color: var(--text); background: #FDFCFF;\n    transition: border-color 0.15s;\n  }\n  textarea:focus, input:focus, select:focus { outline: none; border-color: var(--purple); }\n  textarea { min-height: 56px; resize: vertical; }\n\n  .note-box {\n    background: #FFF8E8; border: 1px solid #F0DBA0; border-radius: 10px;\n    padding: 14px 16px; font-size: 13px; color: #6B5200; margin-top: 4px;\n  }\n  .note-box.security {\n    background: #FDEEF2; border-color: #F3C2D0; color: #8A0F32;\n  }\n  .note-box b { display: block; margin-bottom: 4px; font-family: 'Montserrat', sans-serif; }\n\n  .radio-row { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }\n  .radio-opt { display: flex; align-items: flex-start; gap: 10px; font-size: 13.5px; cursor: pointer; }\n  .radio-opt input { margin-top: 3px; width: auto; }\n\n  .cta-bar {\n    position: sticky; bottom: 0; left: 0; right: 0;\n    background: rgba(250,249,252,0.92); backdrop-filter: blur(8px);\n    border-top: 1px solid var(--border);\n    padding: 14px 24px; display: flex; justify-content: center; gap: 12px;\n    z-index: 100;\n  }\n  .btn {\n    font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 14px;\n    padding: 13px 26px; border-radius: 10px; border: none; cursor: pointer;\n    transition: transform 0.15s, box-shadow 0.15s;\n  }\n  .btn-primary { background: linear-gradient(120deg, var(--purple), var(--magenta)); color: white; box-shadow: 0 6px 16px rgba(109,8,190,0.28); }\n  .btn-primary:hover { transform: translateY(-1px); }\n  .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }\n  .btn-secondary { background: white; color: var(--purple); border: 1.5px solid var(--purple); }\n\n  .summary-panel {\n    display: none; max-width: 880px; margin: 0 auto 40px; background: var(--card);\n    border: 1px solid var(--border); border-radius: 14px; padding: 24px;\n  }\n  .summary-panel.show { display: block; }\n  .summary-panel h3 { font-family: 'Montserrat', sans-serif; margin-top: 0; }\n  #summaryText {\n    white-space: pre-wrap; font-family: 'SFMono-Regular', Consolas, monospace;\n    font-size: 12.5px; background: #F6F3FB; border-radius: 10px; padding: 16px;\n    max-height: 400px; overflow-y: auto; border: 1px solid var(--border);\n  }\n  .toast {\n    position: fixed; bottom: 90px; left: 50%; transform: translateX(-50%) translateY(20px);\n    background: var(--text); color: white; padding: 10px 20px; border-radius: 8px;\n    font-size: 13px; opacity: 0; transition: all 0.3s; pointer-events: none; z-index: 200;\n  }\n  .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }\n\n  @media (max-width: 560px) {\n    .item { grid-template-columns: 1fr; }\n    .section-desc { margin-left: 0; }\n  }\n<\/style>\n\n<div class=\"grain\"><\/div>\n\n<header>\n  <div class=\"header-inner\">\n    <div class=\"eyebrow\">LakeB2B \u00b7 Enabling Growth<\/div>\n    <h1>LinkedIn Client Onboarding Checklist<\/h1>\n    <div class=\"sub\">Complete this once and we&#8217;ll have everything needed to build your profile, content calendar, and outreach engine \u2014 no back-and-forth emails required.<\/div>\n  <\/div>\n  <div class=\"progress-wrap\"><div class=\"progress-bar\" id=\"progressBar\"><\/div><\/div>\n  <div class=\"progress-label\"><span id=\"progressText\">0 of 0 items addressed<\/span><span id=\"progressPct\">0%<\/span><\/div>\n<\/header>\n\n<main id=\"formRoot\"><\/main>\n\n<div class=\"summary-panel\" id=\"summaryPanel\">\n  <h3>Submission Summary<\/h3>\n  <div id=\"summaryText\"><\/div>\n  <div style=\"margin-top:14px; display:flex; gap:10px; flex-wrap:wrap;\">\n    <button class=\"btn btn-primary\" onclick=\"copySummary()\">Copy to Clipboard<\/button>\n    <button class=\"btn btn-secondary\" onclick=\"downloadSummary()\">Download as .txt<\/button>\n  <\/div>\n<\/div>\n\n<div class=\"cta-bar\">\n  <button class=\"btn btn-secondary\" onclick=\"resetForm()\">Start Over<\/button>\n  <button class=\"btn btn-primary\" id=\"generateBtn\" onclick=\"generateSummary()\">Generate Summary<\/button>\n<\/div>\n\n<div class=\"toast\" id=\"toast\">Copied to clipboard<\/div>\n\n<script>\n\/\/ ---------- Data model: sections + items ----------\nconst SCHEMA = [\n  {\n    title: \"Visual & Brand Assets\",\n    desc: \"Photos, videos, and logo files \u2014 these can be attached separately by email; just flag status here.\",\n    items: [\n      { id: \"photo\", label: \"High-quality profile photo\", detail: false },\n      { id: \"banner\", label: \"LinkedIn banner\", detail: true, detailLabel: \"Banner details \/ theme preference\" },\n      { id: \"logo\", label: \"Company logo & branding assets\", detail: false },\n      { id: \"brandmedia\", label: \"Brand photos & videos\", detail: false },\n      { id: \"eventphotos\", label: \"Speaking \/ event \/ media photos\", detail: false },\n    ]\n  },\n  {\n    title: \"Profile Content\",\n    desc: \"The words that go on the profile itself.\",\n    items: [\n      { id: \"headline\", label: \"Professional headline\", detail: true, detailLabel: \"Draft headline or key points to include\" },\n      { id: \"about\", label: \"About \/ Bio\", detail: true, detailLabel: \"Paste existing bio, or bullet points to work from\" },\n      { id: \"website\", label: \"Company website\", detail: true, detailLabel: \"URL\", single: true },\n      { id: \"services\", label: \"Services & offers\", detail: true, detailLabel: \"List core services\/offers\" },\n      { id: \"audience\", label: \"Target audience\", detail: true, detailLabel: \"Who you sell to (industry, title, company size)\" },\n    ]\n  },\n  {\n    title: \"Story & Positioning\",\n    desc: \"The narrative that shapes the content calendar.\",\n    items: [\n      { id: \"founderstory\", label: \"Founder story & personal journey\", detail: true, detailLabel: \"How you got here \u2014 this directly shapes content themes\" },\n      { id: \"brandstory\", label: \"Brand story\", detail: true, detailLabel: \"Origin, mission, what makes the company different\" },\n    ]\n  },\n  {\n    title: \"Social Proof & Portfolio\",\n    desc: \"Evidence that builds credibility.\",\n    items: [\n      { id: \"testimonials\", label: \"Client testimonials (text & video)\", detail: false },\n      { id: \"casestudies\", label: \"Case studies & success stories\", detail: false },\n      { id: \"portfolio\", label: \"Portfolio \/ work samples\", detail: false },\n    ]\n  },\n  {\n    title: \"Career Background\",\n    desc: \"Fills out the Experience, Education, and Awards sections of the profile.\",\n    items: [\n      { id: \"experience\", label: \"Experience & career history\", detail: false },\n      { id: \"education\", label: \"Education & certifications\", detail: false },\n      { id: \"awards\", label: \"Awards & achievements\", detail: false },\n    ]\n  },\n  {\n    title: \"Strategy & Preferences\",\n    desc: \"How we plan and prioritize content.\",\n    items: [\n      { id: \"goals\", label: \"Content goals & preferred topics\", detail: true, detailLabel: \"What outcomes matter \u2014 leads, hiring, thought leadership, etc.\" },\n      { id: \"competitors\", label: \"Competitors or inspiration accounts\", detail: true, detailLabel: \"LinkedIn profiles\/pages to reference\" },\n      { id: \"cta\", label: \"Call-to-action preferences\", detail: true, detailLabel: \"Book a call, visit site, DM, download, etc.\" },\n      { id: \"social\", label: \"Social media links\", detail: true, detailLabel: \"Other platforms to cross-link\" },\n      { id: \"launches\", label: \"Upcoming launches, events, or announcements\", detail: true, detailLabel: \"Dates and details\" },\n      { id: \"featured\", label: \"Featured section links (website, lead magnet, newsletter, etc.)\", detail: true, detailLabel: \"Links to feature\" },\n    ]\n  },\n];\n\nlet state = {};\nSCHEMA.forEach(sec => sec.items.forEach(it => { state[it.id] = { status: null, detail: \"\" }; }));\nstate.access = { linkedinMethod: null, linkedinContact: \"\" };\nstate.calendar = { method: null, calContact: \"\" };\n\nconst TOTAL_ITEMS = SCHEMA.reduce((n, s) => n + s.items.length, 0) + 2; \/\/ +2 for access & calendar sections\n\nfunction buildForm() {\n  const root = document.getElementById('formRoot');\n  let html = '';\n  SCHEMA.forEach((sec, si) => {\n    html += `<section class=\"section\" style=\"animation-delay:${si*60}ms\">\n      <div class=\"section-head\"><div class=\"section-num\">${si+1}<\/div><div class=\"section-title\">${sec.title}<\/div><\/div>\n      <div class=\"section-desc\">${sec.desc}<\/div>`;\n    sec.items.forEach(it => {\n      html += `<div class=\"item ${it.detail ? 'has-detail' : ''}\" data-id=\"${it.id}\">\n        <div style=\"display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;\">\n          <div class=\"item-label\">${it.label}<\/div>\n          <div class=\"toggle-group\">\n            <button type=\"button\" class=\"toggle-btn\" data-val=\"ready\" onclick=\"setStatus('${it.id}','ready')\">\u2713 Have it<\/button>\n            <button type=\"button\" class=\"toggle-btn\" data-val=\"provide\" onclick=\"setStatus('${it.id}','provide')\">\u2197 Will provide<\/button>\n            <button type=\"button\" class=\"toggle-btn\" data-val=\"na\" onclick=\"setStatus('${it.id}','na')\">\u2014 N\/A<\/button>\n          <\/div>\n        <\/div>\n        ${it.detail ? `<div class=\"detail-row\">\n          ${it.single\n            ? `<input type=\"text\" placeholder=\"${it.detailLabel}\" oninput=\"setDetail('${it.id}', this.value)\">`\n            : `<textarea placeholder=\"${it.detailLabel}\" oninput=\"setDetail('${it.id}', this.value)\"><\/textarea>`}\n        <\/div>` : ''}\n      <\/div>`;\n    });\n    html += `<\/section>`;\n  });\n\n  \/\/ Access section (LinkedIn) \u2014 security-conscious, no password field\n  html += `<section class=\"section\" style=\"animation-delay:${SCHEMA.length*60}ms\">\n    <div class=\"section-head\"><div class=\"section-num\">${SCHEMA.length+1}<\/div><div class=\"section-title\">LinkedIn Profile Access<\/div><\/div>\n    <div class=\"section-desc\">We need publishing access to schedule and post content on your behalf.<\/div>\n    <div class=\"note-box security\">\n      <b>For your security, please don't type your LinkedIn password into this form.<\/b>\n      Choose the access method below instead \u2014 it keeps your credentials out of email and forms entirely.\n    <\/div>\n    <div class=\"radio-row\">\n      <label class=\"radio-opt\"><input type=\"radio\" name=\"access\" onchange=\"setAccess('page_admin')\"> This is a Company Page \u2014 I'll add your team as a Page Admin\/Content Admin via LinkedIn's own Settings \u2192 Admin tools.<\/label>\n      <label class=\"radio-opt\"><input type=\"radio\" name=\"access\" onchange=\"setAccess('call')\"> This is my personal profile \u2014 let's set up access on a short screen-share call instead of sharing credentials in writing.<\/label>\n      <label class=\"radio-opt\"><input type=\"radio\" name=\"access\" onchange=\"setAccess('pw_manager')\"> I'll share credentials via our team's secure password manager (e.g. 1Password\/Bitwarden shared vault) \u2014 not by email or this form.<\/label>\n    <\/div>\n    <div class=\"detail-row\" style=\"margin-top:12px;\">\n      <input type=\"email\" placeholder=\"Email address to add as admin \/ contact for the access call\" oninput=\"setAccessContact(this.value)\">\n    <\/div>\n  <\/section>`;\n\n  \/\/ Calendar section\n  html += `<section class=\"section\" style=\"animation-delay:${(SCHEMA.length+1)*60}ms\">\n    <div class=\"section-head\"><div class=\"section-num\">${SCHEMA.length+2}<\/div><div class=\"section-title\">Appointment Booking & Calendar<\/div><\/div>\n    <div class=\"section-desc\">Needed so we can book, track, and manage meetings that come from your LinkedIn activity.<\/div>\n    <div class=\"note-box security\">\n      <b>Same rule applies here \u2014 no passwords in this form.<\/b>\n      Pick whichever option fits your setup; we'll coordinate the actual access separately and securely.\n    <\/div>\n    <div class=\"radio-row\">\n      <label class=\"radio-opt\"><input type=\"radio\" name=\"calendar\" onchange=\"setCalendar('invite')\"> Invite our scheduling email as an Editor\/Delegate on your existing calendar (Google\/Outlook) \u2014 no credentials needed.<\/label>\n      <label class=\"radio-opt\"><input type=\"radio\" name=\"calendar\" onchange=\"setCalendar('dedicated')\"> I'll create a dedicated Gmail account for bookings and share the login via a secure password manager link (not written here).<\/label>\n      <label class=\"radio-opt\"><input type=\"radio\" name=\"calendar\" onchange=\"setCalendar('booking_tool')\"> I already use a booking tool (Calendly, etc.) \u2014 I'll add your team as a collaborator there.<\/label>\n    <\/div>\n    <div class=\"detail-row\" style=\"margin-top:12px;\">\n      <input type=\"email\" placeholder=\"Email address to invite as Editor\/Collaborator\" oninput=\"setCalendarContact(this.value)\">\n    <\/div>\n  <\/section>`;\n\n  root.innerHTML = html;\n}\n\nfunction setStatus(id, val) {\n  state[id].status = val;\n  const item = document.querySelector(`.item[data-id=\"${id}\"]`);\n  item.querySelectorAll('.toggle-btn').forEach(b => {\n    b.classList.remove('active-ready','active-provide','active-na');\n  });\n  const activeClass = val === 'ready' ? 'active-ready' : val === 'provide' ? 'active-provide' : 'active-na';\n  item.querySelector(`.toggle-btn[data-val=\"${val}\"]`).classList.add(activeClass);\n  updateProgress();\n}\nfunction setDetail(id, val) { state[id].detail = val; }\nfunction setAccess(val) { state.access.linkedinMethod = val; updateProgress(); }\nfunction setAccessContact(val) { state.access.linkedinContact = val; }\nfunction setCalendar(val) { state.calendar.method = val; updateProgress(); }\nfunction setCalendarContact(val) { state.calendar.calContact = val; }\n\nfunction updateProgress() {\n  let answered = 0;\n  SCHEMA.forEach(sec => sec.items.forEach(it => { if (state[it.id].status) answered++; }));\n  if (state.access.linkedinMethod) answered++;\n  if (state.calendar.method) answered++;\n  const pct = Math.round((answered \/ TOTAL_ITEMS) * 100);\n  document.getElementById('progressBar').style.width = pct + '%';\n  document.getElementById('progressText').textContent = `${answered} of ${TOTAL_ITEMS} items addressed`;\n  document.getElementById('progressPct').textContent = pct + '%';\n}\n\nfunction generateSummary() {\n  let lines = [];\n  lines.push(\"LAKEB2B \u2014 LINKEDIN CLIENT ONBOARDING SUMMARY\");\n  lines.push(\"Generated: \" + new Date().toLocaleString());\n  lines.push(\"=\".repeat(50));\n  SCHEMA.forEach(sec => {\n    lines.push(\"\");\n    lines.push(sec.title.toUpperCase());\n    sec.items.forEach(it => {\n      const s = state[it.id];\n      const statusLabel = s.status === 'ready' ? 'HAVE IT' : s.status === 'provide' ? 'WILL PROVIDE' : s.status === 'na' ? 'N\/A' : 'NOT ANSWERED';\n      lines.push(`- ${it.label}: ${statusLabel}`);\n      if (it.detail && s.detail) lines.push(`    > ${s.detail}`);\n    });\n  });\n  lines.push(\"\");\n  lines.push(\"LINKEDIN ACCESS\");\n  const accessLabels = { page_admin: \"Company Page \u2014 added as Page\/Content Admin\", call: \"Personal profile \u2014 access via screen-share call\", pw_manager: \"Shared via team password manager\" };\n  lines.push(`- Method: ${state.access.linkedinMethod ? accessLabels[state.access.linkedinMethod] : 'Not selected'}`);\n  if (state.access.linkedinContact) lines.push(`- Contact\/admin email: ${state.access.linkedinContact}`);\n  lines.push(\"\");\n  lines.push(\"CALENDAR \/ APPOINTMENT ACCESS\");\n  const calLabels = { invite: \"Invited as Editor\/Delegate on existing calendar\", dedicated: \"Dedicated Gmail account, shared via password manager\", booking_tool: \"Added as collaborator on existing booking tool\" };\n  lines.push(`- Method: ${state.calendar.method ? calLabels[state.calendar.method] : 'Not selected'}`);\n  if (state.calendar.calContact) lines.push(`- Contact email: ${state.calendar.calContact}`);\n  lines.push(\"\");\n  lines.push(\"Note: No passwords were collected through this form. Any credential-based access will be exchanged through a secure channel as indicated above.\");\n\n  document.getElementById('summaryText').textContent = lines.join(\"\\n\");\n  document.getElementById('summaryPanel').classList.add('show');\n  document.getElementById('summaryPanel').scrollIntoView({ behavior: 'smooth', block: 'start' });\n}\n\nfunction copySummary() {\n  const text = document.getElementById('summaryText').textContent;\n  const showToast = () => {\n    const t = document.getElementById('toast');\n    t.classList.add('show');\n    setTimeout(() => t.classList.remove('show'), 2200);\n  };\n  if (navigator.clipboard && navigator.clipboard.writeText) {\n    navigator.clipboard.writeText(text).then(showToast).catch(() => fallbackCopy(text, showToast));\n  } else {\n    fallbackCopy(text, showToast);\n  }\n}\nfunction fallbackCopy(text, cb) {\n  const ta = document.createElement('textarea');\n  ta.value = text; document.body.appendChild(ta); ta.select();\n  try { document.execCommand('copy'); cb(); } catch(e) { alert('Please select and copy manually.'); }\n  document.body.removeChild(ta);\n}\nfunction downloadSummary() {\n  const text = document.getElementById('summaryText').textContent;\n  const blob = new Blob([text], { type: 'text\/plain' });\n  const a = document.createElement('a');\n  a.href = URL.createObjectURL(blob);\n  a.download = 'LakeB2B_LinkedIn_Onboarding_Summary.txt';\n  a.click();\n}\nfunction resetForm() {\n  state = {};\n  SCHEMA.forEach(sec => sec.items.forEach(it => { state[it.id] = { status: null, detail: \"\" }; }));\n  state.access = { linkedinMethod: null, linkedinContact: \"\" };\n  state.calendar = { method: null, calContact: \"\" };\n  document.getElementById('summaryPanel').classList.remove('show');\n  buildForm();\n  updateProgress();\n}\n\nbuildForm();\nupdateProgress();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>LakeB2B \u00b7 Enabling Growth LinkedIn Client Onboarding Checklist Complete this once and we&#8217;ll have everything needed to build your profile, content calendar, and outreach engine \u2014 no back-and-forth emails required. 0 of 0 items addressed0% Submission Summary Copy to Clipboard Download as .txt Start Over Generate Summary Copied to clipboard<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-42963","page","type-page","status-publish","hentry","entry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Linkedin Onboarding - LakeB2B<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linkedin Onboarding - LakeB2B\" \/>\n<meta property=\"og:description\" content=\"LakeB2B \u00b7 Enabling Growth LinkedIn Client Onboarding Checklist Complete this once and we&#8217;ll have everything needed to build your profile, content calendar, and outreach engine \u2014 no back-and-forth emails required. 0 of 0 items addressed0% Submission Summary Copy to Clipboard Download as .txt Start Over Generate Summary Copied to clipboard\" \/>\n<meta property=\"og:url\" content=\"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding\" \/>\n<meta property=\"og:site_name\" content=\"LakeB2B\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T10:04:42+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding\",\"url\":\"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding\",\"name\":\"Linkedin Onboarding - LakeB2B\",\"isPartOf\":{\"@id\":\"https:\/\/realesta.co\/inprojects\/lbbnew\/#website\"},\"datePublished\":\"2026-07-07T10:04:41+00:00\",\"dateModified\":\"2026-07-07T10:04:42+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/realesta.co\/inprojects\/lbbnew\/#website\",\"url\":\"https:\/\/realesta.co\/inprojects\/lbbnew\/\",\"name\":\"LakeB2B\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/realesta.co\/inprojects\/lbbnew\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Linkedin Onboarding - LakeB2B","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Linkedin Onboarding - LakeB2B","og_description":"LakeB2B \u00b7 Enabling Growth LinkedIn Client Onboarding Checklist Complete this once and we&#8217;ll have everything needed to build your profile, content calendar, and outreach engine \u2014 no back-and-forth emails required. 0 of 0 items addressed0% Submission Summary Copy to Clipboard Download as .txt Start Over Generate Summary Copied to clipboard","og_url":"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding","og_site_name":"LakeB2B","article_modified_time":"2026-07-07T10:04:42+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding","url":"https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding","name":"Linkedin Onboarding - LakeB2B","isPartOf":{"@id":"https:\/\/realesta.co\/inprojects\/lbbnew\/#website"},"datePublished":"2026-07-07T10:04:41+00:00","dateModified":"2026-07-07T10:04:42+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/realesta.co\/inprojects\/lbbnew\/linkedin-onboarding"]}]},{"@type":"WebSite","@id":"https:\/\/realesta.co\/inprojects\/lbbnew\/#website","url":"https:\/\/realesta.co\/inprojects\/lbbnew\/","name":"LakeB2B","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/realesta.co\/inprojects\/lbbnew\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"lake-admin","author_link":"https:\/\/realesta.co\/inprojects\/lbbnew\/author\/lake-admin"},"uagb_comment_info":0,"uagb_excerpt":"LakeB2B \u00b7 Enabling Growth LinkedIn Client Onboarding Checklist Complete this once and we&#8217;ll have everything needed to build your profile, content calendar, and outreach engine \u2014 no back-and-forth emails required. 0 of 0 items addressed0% Submission Summary Copy to Clipboard Download as .txt Start Over Generate Summary Copied to clipboard","_links":{"self":[{"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/pages\/42963","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/comments?post=42963"}],"version-history":[{"count":2,"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/pages\/42963\/revisions"}],"predecessor-version":[{"id":42965,"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/pages\/42963\/revisions\/42965"}],"wp:attachment":[{"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/media?parent=42963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/categories?post=42963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/realesta.co\/inprojects\/lbbnew\/wp-json\/wp\/v2\/tags?post=42963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}