docs(handbook/support): expand how-to-answer guide as decision tree#3008
Conversation
Grew the support playbook from a handful of templates to a 44-branch decision tree covering account/access, billing, self-hosting, ingestion, SDKs/integrations, prompt management, evaluations, security/compliance, data deletion, API errors, UI bugs, and non-support inbox triage. Branches use native <details>/<summary> (mapped to the Details MDX components) so support engineers and AI support agents can walk down to the matching playbook. Each leaf has triage steps, a canonical reply template drawn from real team replies, escalation rules, and links to existing FAQ pages. Patterns are derived from analyzing ~1,500 closed Pylon tickets. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@claude review |
Address review comments on the support decision tree: remove an unrelated FAQ link from the CVE section, scrub the public startup discount code, split telemetry guidance into OSS (can disable) vs EE (cannot disable), correct the SSO tier claim (included in self-hosted OSS, not EE-gated), and fix region count and missing Japan region in the login/password-reset reply templates. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nv var LangChain branch was using v2 import path (langfuse.callback) and v2 helper (update_current_observation with usage=); update to v3 (langfuse.langchain and update_current_generation with usage_details=). Also drop the LANGFUSE_PROMPT_CACHE_TTL env var from the prompt-caching tip — it doesn't exist; cache_ttl_seconds=0 is the canonical bypass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Swap every em dash for context-appropriate punctuation (colon for bullet-definition patterns, comma or period for inline pauses), and remove personal references (Steffen, Akio, Clemens, Nimar) from escalation paths in favor of generic team/role names (engineering, enterprise team, enterprise@langfuse.com). AI-agent handoff still names Jannik and Caleb. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…recedence claims - Scope the Java SDK claim: langfuse-java exists for prompts/scores via the public API but lacks native tracing, so experiments still need manual OTEL attribute propagation. - Rename the legacy ingestion endpoint to /api/public/ingestion to match the canonical FAQ. - Flip the framework otel operation.cost line so it no longer reads as self-contradictory: the framework attribute is overridden, our pricing table is the source of truth. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…e, and SSO opener - Replace the non-existent "Team" plan with "Pro + Teams Add-on" across the preflight tier list, SSO triage, Stripe-cancellation bullet, and SSO opener. - Scope the SSO opener to Cloud (the original lead sentence claimed SSO was EE-gated and that support+engineering apply credentials, which contradicted the bullet below it for self-hosted users). - Fix the data retention section: Pro Cloud (not just Enterprise) can configure retention; the EE-only claim only applies to self-hosted. - Remove the "(read-only)" qualifier on the MCP server bullet: per the canonical MCP doc, both read and write tools ship enabled by default and read-only is a customer-side allowlist opt-in. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Stop calling the Python SDK "scoped packages" (it ships as the single pip package langfuse) and label JS scoped packages as v4+ (they debuted at v4 GA, not v1) across the missing-traces, OTEL, and evaluator-not-running branches. - HIPAA branch: the BAA auto-applies for eligible HIPAA-region accounts (no signature flow) and past trace data is migratable via the data migration cookbook. Update both triage steps and the BAA reply template to match the canonical /security/hipaa page. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This reverts commit a46e446.
There was a problem hiding this comment.
Additional findings (outside current diff — PR may have been updated during review):
-
🔴
lib/source.ts:147-152— Build-breaking: the recent revert inlib/source.tsremoves theworkshopSourceexport, but three files still import it from@/lib/source—lib/section-registry.ts(lines 15, 122),app/workshop/layout.tsx(lines 1, 11), andapp/workshop/[[...slug]]/page.tsx(lines 4, 22, 54, 70, 76). This will failtsc/next buildwith TS2305 'Module "@/lib/source" has no exported member workshopSource' and block the Vercel deploy. Fix by either (a) also reverting the workshop callers (deleteapp/workshop/, remove the workshop entry fromlib/section-registry.ts, and remove the workshopdefineDocs(...)fromsource.config.ts:179-182) or (b) restoring theworkshopSourceloader inlib/source.ts.Extended reasoning...
What the bug is. This PR contains two changes: an MDX docs expansion in
content/handbook/support/how-to-answer-support-questions.mdx, and a revert inlib/source.tsthat removes both theworkshopcollection import (line 17 of the prior file) and the entireworkshopSourceloader export (the deleted hunk at the old lines 148-153). The MDX change is the headline; the second change is the build breaker.The specific code path that triggers the failure. Three files in the working tree still import the now-deleted symbol from
@/lib/source:lib/section-registry.ts:15—import { ..., workshopSource, ... } from "@/lib/source";— used at line 122 assource: workshopSourceinsidedocSections.workshop.app/workshop/layout.tsx:1—import { workshopSource } from "@/lib/source";— used at line 11 asworkshopSource.getPageTree()in the layout shell.app/workshop/[[...slug]]/page.tsx:4—import { workshopSource } from "@/lib/source";— used at lines 22, 54, 70, and 76 (workshopSource.getPages(),workshopSource.getPage(slug),workshopSource.generateParams()). ThegenerateStaticParamscall at line 76 in particular runs duringnext build, so this is not just a type error — it is a build-time runtime reference to a missing module export.
These imports are unconditional named imports, not commented out and not behind a feature flag. TypeScript will reject them with
TS2305: Module "@/lib/source" has no exported member workshopSource, and Next.js will fail to resolve the symbol at bundle time.Why existing guardrails do not catch this. The PR title and description scope it as a docs change (
docs(handbook/support): expand how-to-answer guide as decision tree), and the prose review tooling (Greptile, Vercel preview comments) focuses on the MDX content. There is no markdown-only linter that would flag this — onlytsc/next buildwould. The Vercel preview is listed as "Building" in the PR timeline; once it gets past the docs change, the Next build step on this branch will fail.Note on the underlying data. The
workshopcollection itself is still declared insource.config.ts:179-182(export const workshop = defineDocs({ dir: "content/workshop", ... })), so the underlying MDX collection is intact. Only the loader wrapper that exposes it asworkshopSourcewas removed. This means the revert is partial: data layer remains, loader is gone, callers still reference the loader.Step-by-step proof.
- Check out this PR branch and run
pnpm install. - Run
pnpm typecheck(ornpx tsc --noEmit). It will fail with three TS2305 errors atlib/section-registry.ts:15,app/workshop/layout.tsx:1, andapp/workshop/[[...slug]]/page.tsx:4, all of the formModule '"@/lib/source"' has no exported member 'workshopSource'. - Equivalently, run
pnpm build(ornext build). It will fail at the type-check phase with the same errors, or at the bundle phase when Next.js tries to resolve the named import. - Vercel deploy will fail on the same step. The "Building" status in the PR timeline will flip to "Failed" once the typecheck stage runs.
Impact. Hard build-breaking on a docs PR. Blocks Vercel deploy and any downstream merge train. The PR title and description give no signal that a non-docs file is being touched, which makes this easy to miss in review.
How to fix. Pick one of two paths:
- (a) Complete the revert. The previous commit
51f584f [codex] Add workshop section (#3003)introduced all of these caller sites together with the loader. Mirror its inverse: deleteapp/workshop/(bothlayout.tsxand[[...slug]]/page.tsx), remove theworkshopSourceimport and theworkshopentry fromlib/section-registry.ts, and remove theworkshop = defineDocs({...})block fromsource.config.ts:179-182. This is the minimal change consistent with the commit message "remove workshop collection loader". - (b) Restore the loader. Re-add the
workshopimport tolib/source.tsand re-add theworkshopSource = loader({...})block. This keeps the workshop section live in production until the team is ready to remove it end-to-end.
Either fix unblocks the build. (a) matches the intent of the commit message; (b) is the smaller diff and lower-risk if the revert was not actually intended to remove the workshop UI as well.
…claim
Per content/handbook/chapters/open-source.mdx, EE modules ship as source
code in the same image and are runtime-gated by LANGFUSE_EE_LICENSE_KEY.
Remove the four reply-template sentences/bullets that claimed the
published image excludes the @langfuse/ee package; the existing
runtime-gating language ('no EE code paths execute without the env var')
already covers the compliance question correctly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ode claims - Replace the parenthetical EE-feature enumeration (6 features, used "project-level masking" instead of "Server-Side Data Masking") in both the Canonical facts bullet and the reply template with a link to /self-hosting/license-key, which has the full 9-feature list. - Remove the "Fast Mode is on by default" triage bullet (default depends on org creation date per /docs/v4) and drop the "left sidebar" location claim from the UI-bug branch and its reply template (the toggle is in the bottom-left corner, not the main nav). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…3008) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Grew the support playbook from a handful of templates to a 44-branch decision tree covering account/access, billing, self-hosting, ingestion, SDKs/integrations, prompt management, evaluations, security/compliance, data deletion, API errors, UI bugs, and non-support inbox triage.
Branches use native
(mapped to the Details MDX components) so support engineers and AI support agents can walk down to the matching playbook. Each leaf has triage steps, a canonical reply template drawn from real team replies, escalation rules, and links to existing FAQ pages.
- The decision tree is structured with collapsible
- Two concrete errors need attention before merge: a misplaced FAQ link in the CVE section points to
Loading
Patterns are derived from analyzing ~1,500 closed Pylon tickets.
Greptile Summary
This PR replaces the original ~170-line support guide with a comprehensive 1,255-line decision tree covering 13 question categories and 44 branches, each containing triage steps, canonical reply templates drawn from ~1,500 resolved tickets, escalation rules, and links to existing FAQ pages.
<details>/<summary>blocks so both human engineers and AI support agents can navigate to the matching playbook branch quickly./faq/all/data-retention-timeouts-and-errors(a data retention topic) instead of a security/disclosure page; and the startup discount codeSTARTUP-LF-50is now published on a publicly accessible handbook URL, allowing it to be used at checkout without the required form submission.Confidence Score: 3/5
The documentation changes are high-quality and well-structured, but two concrete correctness issues should be resolved before the page goes live: a wrong FAQ link that would send support engineers and AI agents to the wrong resource, and a promotional discount code that any visitor can now apply without completing the required vetting form.
The playbook content itself is thorough and drawn from real ticket resolutions. Two issues stand out: the STARTUP-LF-50 code published on a public URL defeats the form-gating intended by the startup program, and the CVE section points to an entirely unrelated FAQ about data retention. Both issues are on the changed file and have immediate operational impact — one financial, one on playbook accuracy.
content/handbook/support/how-to-answer-support-questions.mdx — specifically the startup discount code block (line 339) and the CVE section FAQ link (line 610).
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Incoming support ticket] --> B[Preflight: check tier, region, status page, Pylon duplicates] B --> C{Category?} C --> D[1. Account / login / access] C --> E[2. Billing / pricing / contracts] C --> F[3. Self-hosting] C --> G[4. Ingestion] C --> H[5. SDKs & integrations] C --> I[6. Prompt management] C --> J[7. Evaluations] C --> K[8. Security & compliance] C --> L[9. Data deletion & retention] C --> M[10. API errors] C --> N[11. UI bugs] C --> O[12. Customer leaving] C --> P[13. Non-support inbox] D --> D1{Sub-branch} D1 --> D2[Can't log in → region mismatch] D1 --> D3[Password reset → suppression list] D1 --> D4[SSO setup → collect IdP credentials] D1 --> D5[2FA recovery → verify ownership] D1 --> D6[Can't see org/project → RBAC/region] E --> E1{Sub-branch} E1 --> E2[Unexpected charge → Stripe + OTEL check] E1 --> E3[Cancel / downgrade → Stripe vs EE contract] E1 --> E4[Refund → USD 2k threshold] E1 --> E5[Startup discount → form + STARTUP-LF-50] E1 --> E6[Enterprise quote → route to Akio/Clemens] K --> K1[SOC2/ISO27001 → route to Akio] K --> K2[DPA → langfuse.com/security/dpa] K --> K3[BAA/HIPAA → hipaa.cloud.langfuse.com] K --> K4[Bug bounty → no formal program]Prompt To Fix All With AI
Reviews (1): Last reviewed commit: "docs(handbook/support): expand how-to-an..." | Re-trigger Greptile