{"record":{"id":"9f9c365ab72696d1","repo":"tinyhumansai/openhuman","slug":"onboarding-context-gmail-stage-failed","errorCode":null,"errorMessage":"[onboarding:context] gmail stage failed","messagePattern":"\\[onboarding:context\\] gmail stage failed","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/pages/onboarding/steps/ContextGatheringStep.tsx","lineNumber":237,"sourceCode":"    let profileUrl: string | null;\n    try {\n      profileUrl = await findLinkedInUrlViaComposio();\n      if (profileUrl) {\n        setStage('gmail-search', 'done', durationMs(gmailStartedAt));\n      } else {\n        setStage('gmail-search', 'skipped', durationMs(gmailStartedAt), 'no_linkedin_url');\n        setStage('linkedin-scrape', 'skipped');\n        setStage('build-profile', 'skipped');\n        console.debug('[onboarding:context] pipeline finished', {\n          durationMs: durationMs(pipelineStartedAt),\n          result: 'no_profile_url',\n        });\n        setFinished(true);\n        return;\n      }\n    } catch (e) {\n      const reason = errorReason(e);\n      console.warn('[onboarding:context] gmail stage failed', {\n        durationMs: durationMs(gmailStartedAt),\n        reason,\n      });\n      setStage('gmail-search', 'error', durationMs(gmailStartedAt), reason);\n      setStage('linkedin-scrape', 'skipped');\n      setStage('build-profile', 'skipped');\n      console.debug('[onboarding:context] pipeline finished', {\n        durationMs: durationMs(pipelineStartedAt),\n        result: 'gmail_error',\n        reason,\n      });\n      setHasError(true);\n      setFinished(true);\n      return;\n    }\n\n    // Stage 2 — Apify LinkedIn scrape (disabled: unreliable, skipped during\n    // profile build). PROFILE.md is built URL-only from stage 3.","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/pages/onboarding/steps/ContextGatheringStep.tsx#L219-L255","documentation":"The Gmail stage of the onboarding context-gathering pipeline failed: findLinkedInUrlViaComposio threw while searching the user's connected Gmail for a LinkedIn URL. The catch marks the pipeline finished with a failure outcome (thegmail-search stage errors rather than skipping), so no profile build or later stages run for this onboarding attempt.","triggerScenarios":"Thrown at app/src/pages/onboarding/steps/ContextGatheringStep.tsx:237 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the stage's logged error for the Composio/Gmail failure reason (disconnected account, expired grant, API error)","Reconnect Gmail via the integrations/connections settings and re-run context gathering","If Composio is not configured, the step can be skipped — profile build is optional to onboarding","Recurring failures: inspect core logs for the gmail search tool call"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}