{
  "for_llm": "This is the index page for LeadLift's Onboarding system (a coded client OS plus 3 Make scenarios). Each unit has its own page in this folder (01.html, 02.html, 03.html) with its own embedded manifest. Read this to understand the whole flow, then open a unit for detail. 'pending' lists a part that exists in the process but has no page yet. 'access' says who can open what, how to add or remove a person, what is shared, the Claude connector, where the code lives and who owns each login. Facts are as of LeadLift main e0a8709 (12 Oct 2026).",
  "system": "Onboarding",
  "client": "LeadLift Marketing",
  "flow": "Prerequisites (Whop product named 'onboarding' + 3 Make scenarios) -> Payment to onboarding started (Whop -> Modal server: client row, 17 steps, #onboarding launch thread, legs: Slack, Drive via Make, Skool + welcome email) -> [Contract (pending, by hand) | Onboarding form to onboarded (form -> #onboarding-forms -> form leg -> human steps in the app -> Confirm & close / 100 - Onboarded)] -> Editing Pipeline (separate system)",
  "units": [
    {
      "index": 1,
      "name": "Payment to onboarding started",
      "file": "01.html",
      "code": {
        "stage": "os/process/ll-onboarding-flow.md",
        "boxes": [
          "2",
          "3",
          "7",
          "8",
          "9",
          "10",
          "11",
          "13",
          "14",
          "15",
          "24",
          "25"
        ]
      },
      "scenarios": [
        6581813,
        6585401,
        6582021
      ]
    },
    {
      "index": 2,
      "name": "Onboarding form to onboarded",
      "file": "02.html",
      "code": {
        "stage": "os/process/ll-onboarding-flow.md",
        "boxes": [
          "16",
          "17",
          "18",
          "19",
          "20",
          "21",
          "22",
          "23",
          "26"
        ]
      },
      "component": "Onboarding form (onboarding.leadliftagency.co, Cloudflare Pages project leadlift-onboarding)"
    },
    {
      "index": 3,
      "name": "Prerequisites: Whop products and Make",
      "file": "03.html",
      "code": {
        "stage": "os/process/ll-onboarding-flow.md",
        "boxes": [
          "2",
          "14"
        ]
      },
      "scenarios": [
        6581813,
        6585401,
        6582021
      ]
    }
  ],
  "pending": [
    "Slot 04: Contract (boxes 4, 5, 6). Done by hand today: a person drafts and sends it in PandaDoc. Sheni makes the contract template first, then the page is added as an amend run. The Make scenario 'Watch Contracts >> Alert & Update' (6584038) has one module and is off. The contract runs alongside the form and gates nothing."
  ],
  "sibling_systems": [
    {
      "name": "Editing Pipeline",
      "href": "../editing-pipeline/",
      "why": "what happens after onboarding, when the client uploads footage to Raw Footage"
    },
    {
      "name": "OS walkthrough",
      "href": "../os-walkthrough/",
      "why": "the app screens and the Slack channels"
    }
  ],
  "not_built_or_not_proven": [
    "No real payment has gone through onboarding as of 12 Oct; every run since 10 Oct was a test. None of the products real Whop payments came from has 'onboarding' in its name.",
    "Contract (boxes 4-6): by hand, no code.",
    "Knowledge bank (box 16), brief extraction (box 20), KPI baseline draft (box 21): not built. Steps 'Client knowledge bank created', 'Transcript captures details', 'Client knowledge bank updated' have no code and no app button.",
    "Failed or past-due payment (box 25): not built. A non-succeeded Whop event changes nothing; the raw event is kept.",
    "19 of the 50 real clients imported on 11 Oct have no email. A payment from one of them matches no client, makes a duplicate and starts a full onboarding."
  ],
  "access": {
    "people": [
      {
        "who": "Fidel Guajardo",
        "role": "Founder",
        "can_open": [
          "LeadLift OS app",
          "Slack (workspace admin)",
          "Make (account owner)",
          "Google Drive (owns every client folder)",
          "Whop (admin)",
          "Skool (group admin)",
          "Modal (workspace owner)"
        ],
        "sign_in": "emailed code",
        "connector_role": "admin (only link today)"
      },
      {
        "who": "Paulo",
        "role": "CSM",
        "can_open": [
          "app",
          "Slack",
          "Drive client folders (edit)"
        ],
        "sign_in": "emailed code",
        "connector_role": "none yet"
      },
      {
        "who": "Sterlin Phillips",
        "role": "Head of Media Buying",
        "can_open": [
          "app",
          "Slack",
          "Drive client folders (edit)"
        ],
        "sign_in": "emailed code",
        "connector_role": "none yet",
        "note": "no slack_user_id on the Team page, so he is not tagged and not invited to new client channels"
      },
      {
        "who": "Chris Brown",
        "role": "Media Buyer",
        "can_open": [
          "app",
          "Slack",
          "Drive client folders (edit)"
        ],
        "sign_in": "emailed code",
        "connector_role": "none yet"
      },
      {
        "who": "Jo\u00e3o Marcos Cascione",
        "role": "Media Buyer",
        "can_open": [
          "app",
          "Slack",
          "Drive client folders (edit)"
        ],
        "sign_in": "emailed code",
        "connector_role": "none yet"
      },
      {
        "who": "Icarus Growth (Sheni Salami)",
        "role": "Builder and support",
        "can_open": [
          "app (2 allow-list addresses)",
          "GitHub (admin; 3 IcG developers read)",
          "Make (admin seat + API key)",
          "server deploys",
          "every client Drive folder made by onboarding (edit, domain permission icarusgrowth.com from drive_access_grants)",
          "every new client Slack channel (ONBOARDING_ALERT_SLACK_ID defaults to Sheni's Slack user and slack_steps invites it)"
        ],
        "sign_in": "emailed code",
        "connector_role": "makes connector links today"
      }
    ],
    "counts": {
      "team_active": 5,
      "sign_in_allow_list": 2,
      "signed_in_from_leadlift_as_of_11_oct": 0
    },
    "sign_in": {
      "method": "email + 6-digit emailed code, no passwords",
      "allowed": [
        "Active team row with an email",
        "sign-in allow list (Icarus Growth's 2 addresses today)"
      ],
      "add_outside_address": "a developer adds it to the allow list"
    },
    "add_member": [
      "Team page: add name, email, job title, Slack id, client limit, status Active",
      "person signs in with the emailed code",
      "invite to LeadLift Slack + team channels",
      "existing client channels by hand; new client channels invite every Active team row with a slack_user_id (os/api/onboarding_legs.py slack_steps)",
      "Fidel shares the Drive 'Clients' folder (edit); new client folders are also shared with every Active team email by STEP 1C",
      "connector link on request (admin or member)"
    ],
    "remove_member": [
      "Team page -> Inactive (no sign-in; connector link stops within 60 s; no longer invited to new client channels or shared on new folders)",
      "remove from Slack workspace",
      "remove from Drive 'Clients' folder and from each client folder shared by name (not automatic)",
      "remove GitHub access if any"
    ],
    "sharing": [
      {
        "what": "client private Slack channel",
        "who": "paying client (Slack Connect invite, expires 14 days) + up to 10 people listed on the form",
        "revoke": "remove from channel; never archive/delete the channel or remove the bot (posts fail, #sentry reports); renaming is safe: the system posts by channel id"
      },
      {
        "what": "Raw Footage folder",
        "who": "anyone with the link can edit (Make 6581813 module 9, role writer, type anyone, allowFileDiscovery false; Sheni 10/11 Oct)",
        "revoke": "Fidel changes sharing in Drive; client can then no longer upload"
      },
      {
        "what": "client folder",
        "who": "client email + form email: reader on the client folder, writer on Raw Footage and Lead Sheet; every Active team email + the icarusgrowth.com domain: writer on the client folder (STEP 1C 6585401, drive_access_grants)",
        "revoke": "Fidel removes the person in Drive"
      },
      {
        "what": "other client subfolders (Edited, Contract, Brief)",
        "who": "anyone with the link can view, inherited from the Drive 'Clients' parent folder (per automations/make/onboarding-drive/README.md; not re-checked live by the page author)",
        "revoke": "change the 'Clients' folder sharing"
      },
      {
        "what": "onboarding form link",
        "who": "one per client, in the welcome email; drafts save per page; two people can fill it",
        "revoke": "after Submit the link shows 'This form has been submitted'. No other switch is documented (open question)."
      },
      {
        "what": "Skool invite",
        "who": "paying client, Fidel's Skool group",
        "revoke": "Fidel removes the member"
      },
      {
        "what": "ad review link",
        "who": "client channel at Client Review (Editing Pipeline)",
        "revoke": "acts only while the card waits for the client"
      },
      {
        "what": "this documentation site",
        "who": "anyone with the address",
        "revoke": "ask Icarus Growth"
      }
    ],
    "connector": {
      "exists": true,
      "name": "LeadLift OS",
      "what": "read boards, clients, team, calls; approved changes for an admin",
      "roles": {
        "admin": [
          "reads everything",
          "changes after the person approves each one; logged under that person"
        ],
        "member": [
          "read only"
        ]
      },
      "who_has_one": "Fidel only",
      "get_link": "Icarus Growth makes each link today, one-to-one; the named owner after handover; shown once",
      "add_steps": [
        "Claude -> Settings -> Connectors",
        "Add custom connector",
        "Name: LeadLift OS",
        "paste the personal link, save"
      ],
      "revoke": "Team page Inactive (60 s) or a developer replaces the link",
      "plugin": "a Claude Code plugin installs the connector plus 4 skills; nobody has installed it yet"
    },
    "code": {
      "exists": true,
      "repo": "https://github.com/Icarus-Growth/leadlift-os (private)",
      "owner_today": "Icarus Growth (Sheni admin; 3 IcG developers read)",
      "owner_after": "OPEN: CHANGE_GUIDE.md owner line is still TODO",
      "server_note": "Modal app leadlift-os already runs in Fidel's workspace (feguajard); the deploy login is on Icarus Growth's side",
      "move_steps": [
        "LeadLift makes or chooses a GitHub account/org",
        "Icarus Growth transfers the repo (history stays)",
        "give the named owner a Modal deploy login",
        "CI checks (lint, test) run with no secrets",
        "write the owner in CHANGE_GUIDE.md",
        "plugin users reinstall from the new address"
      ],
      "checks": "lint, test"
    },
    "accounts": [
      {
        "tool": "Modal",
        "does": "server, every route, the schedules",
        "owner": "Fidel's workspace; Icarus Growth deploys today",
        "secrets": [
          "Modal secret leadlift-os-secrets (a copy of the repo .env)"
        ]
      },
      {
        "tool": "Supabase",
        "does": "database + sign-in",
        "owner": "OPEN",
        "secrets": [
          "SUPABASE_URL",
          "SUPABASE_SECRET_KEY",
          "SUPABASE_PUBLISHABLE_KEY",
          "SUPABASE_DATABASE_URL"
        ]
      },
      {
        "tool": "Cloudflare",
        "does": "hosts the app and the onboarding form",
        "owner": "OPEN; Icarus Growth holds a release token"
      },
      {
        "tool": "GoDaddy",
        "does": "leadliftagency.co DNS",
        "owner": "OPEN"
      },
      {
        "tool": "Resend",
        "does": "sign-in codes + welcome email",
        "owner": "OPEN",
        "secrets": [
          "RESEND_API_KEY",
          "RESEND_FROM"
        ]
      },
      {
        "tool": "Make",
        "does": "Drive work, Fidel's welcome, footage scan and moves",
        "owner": "Fidel's account (org Leadlift, Core plan, 10,000 ops/month); IcG edits by API key; Sheni has an admin seat",
        "secrets": [
          "MAKE_HOOK_DRIVE_FOLDER",
          "MAKE_HOOK_DRIVE_ACCESS",
          "MAKE_HOOK_FIDEL_WELCOME",
          "MAKE_HOOK_FOOTAGE_SCAN"
        ]
      },
      {
        "tool": "Google Drive",
        "does": "every client folder and all footage",
        "owner": "Fidel's Google account; Make's Drive connection expires 11 Apr 2027"
      },
      {
        "tool": "Slack",
        "does": "every message and button",
        "owner": "Fidel is workspace admin; IcG set up the Slack app",
        "secrets": [
          "SLACK_BOT_TOKEN",
          "SLACK_SIGNING_SECRET"
        ]
      },
      {
        "tool": "Whop",
        "does": "the payment that starts onboarding",
        "owner": "Fidel (admin)",
        "secrets": [
          "WHOP_WEBHOOK_SECRET",
          "WHOP_SELLER_BUSINESS_ID"
        ]
      },
      {
        "tool": "Skool",
        "does": "adds the client to the group",
        "owner": "Fidel (group admin)",
        "secrets": [
          "SKOOL_ADD_MEMBER_WEBHOOK"
        ]
      },
      {
        "tool": "Fathom",
        "does": "records calls, sends them to the server",
        "owner": "LeadLift's Fathom account",
        "secrets": [
          "FATHOM_WEBHOOK_SECRET"
        ]
      },
      {
        "tool": "OpenRouter",
        "does": "AI client match",
        "owner": "LeadLift's own account; LeadLift pays (checked 12 Oct)",
        "secrets": [
          "OPENROUTER_API_KEY"
        ]
      },
      {
        "tool": "PandaDoc",
        "does": "contract (not built)",
        "owner": "a LeadLift company login, connected in Make"
      },
      {
        "tool": "GitHub",
        "does": "the code",
        "owner": "Icarus Growth today; moves to LeadLift at handover"
      }
    ],
    "secrets_policy": "Names only in this manifest. Values live in the Modal secret store, Cloudflare settings and each tool's own connection settings. The shared ONBOARDING_LEG_SECRET is set in three places (Modal, the form's Cloudflare worker, Make) and also shows in Make's run log for 30 days."
  }
}