Skip to content

PRDCT-487: file the Getting Started side trips in their own sections - #1109

Closed
Iamfle4ka wants to merge 76 commits into
PRDCT-487-getting-startedfrom
PRDCT-487-sidetrips
Closed

Iamfle4ka wants to merge 76 commits into
PRDCT-487-getting-startedfrom
PRDCT-487-sidetrips

Conversation

@Iamfle4ka

@Iamfle4ka Iamfle4ka commented Sep 1, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #1071 — merge that first. This PR touches only where the legacy side trips live, not the arc itself.

Why

#1071 rewrites Getting Started as a seven-step arc and retires the old /tutorial/ section (191 files). Four legacy side trips came along unchanged and still sit inside /getting-started/, even though they are not steps of the arc — and six pages under /components/extractors/database/ were already linking to one of them as the basic-configuration reference. That is the add-alongside shape the migration is supposed to remove: the topic's real siblings live elsewhere.

What moved

Was Now Why there
/getting-started/load/googlesheets/ folded into /components/extractors/storage/google-drive/ The UI card "Google Sheets — Data Source" is component keboola.ex-google-drive — the connector that page already documented. Verified against the live catalog in project 264. The walkthrough, the Kai tip and the sample-table prep moved onto it; the page keeps its slug and inherits both tutorial URLs, and is retitled Google Sheets the way the product names it. (An earlier commit on this branch created a separate google-sheets page — that was a second page for one component, and is reverted.)
/getting-started/transform/workspace/ /workspace/create/ Siblings are SQL Editor and the JDBC-driver guides. The page even opened by pointing at /workspace/ for "the full documentation".
/getting-started/ad-hoc/ /workspace/ad-hoc-analysis/ 285 lines of Python-workspace + Jupyter + BigQuery work — unique content, no duplicate anywhere. Reframed as "explore once, throw it away" instead of a tutorial epilogue.
/getting-started/branches/ (7 pages) /components/branches/tutorial/ A walkthrough of a Components feature, not a step of the arc — and /components/branches/ already linked to it as "our tutorial" while borrowing three of its figures. All 53 figures and both sample CSVs moved with it, so the parent page's images resolve locally. Retitled Branches Tutorial so two nav nodes no longer both read "Development Branches".
/getting-started/load/database/ folded into /components/extractors/database/sqldb/#try-it-with-our-sample-database sqldb#initial-setup already documents the same procedure with its own screenshots (sqldb-1..4). Only the genuinely unique payload moved: the public sample-Snowflake credentials and the Kai tip.

With all five side trips filed, the Getting Started Going Further nav group is empty and removed — the arc still links every one of them in its own prose.

Every retired URL keeps both redirects — its /getting-started/… slug and its original /tutorial/… slug. Verified in the build: /tutorial/ad-hoc/, /tutorial/load/database/ and friends all resolve to the new homes.

Conservation: the eight db-picture*.png screenshots were dropped rather than moved — they re-shoot the same Add Component → credentials → select-tables flow that sqldb-1..4 already illustrate on the destination page, and the arc's own step 2 was re-shot live in #1071. Nothing else was deleted; all prose found a home.

Development Branches — moved after all

An earlier revision of this PR left this one for you to decide, on the grounds that Branches 2.0 was coming. That was too cautious: /components/branches/ already documents 2.0 via Merge Requests, and the parent page was already treating the walkthrough as its own tutorial while loading three figures out of /getting-started/. Moving it removes that cross-section dependency rather than betting on a release date. The tutorial's index now points at the parent for how branches work, and notes that 2.0 projects merge through a merge request.

If you would still rather it waited for 2.0, this is one commit to revert (f65626a9).

Screenshots

Create a Workspace is reshot against the current UI (the old stills predated the left sidebar, and one showed a colleague's name — PRDCT-616). The reshoot exposed two product changes the text still described the old way, now corrected: a new workspace gets read-only access to all project data, so there is no input mapping and no Load Data step; and the Workspace Credentials dialog is gone, replaced by Open SQL Editor and the JDBC driver. The editor shot runs a real query, so its numbers match the arc (North Atlantic 2,632).

Still on the old UI — needs an owner with Google access. The Sheets walkthrough keeps its original stills, and three of them leak colleague email addresses (michal.hruska@, ondrej.popelka@ on the consent/Drive screens) — a PRDCT-616 issue that predates this PR. Reshooting them needs a Google account authorized in the demo project, which is Nikita's to do; the Keboola-side frames can then be reshot in the same pass. Flagging rather than shipping a half-masked set.

Verification

🤖 Generated with Claude Code

jirkasemmler and others added 30 commits August 4, 2026 10:34
Added by the manage Users endpoints (keboola/connection#8009): user
list, the three membership sub-resource reads, and super-admin grant.
Both Security event operations markdown lists and the
security_operations diagram array get the five entries.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The kbagent Claude Code plugin now ships from the keboola/ai-kit
marketplace (keboola-claude-kit) instead of the CLI's own marketplace
(keboola-agent-cli).

- cli/for-agents: update the install code block to
  `/plugin marketplace add keboola/ai-kit` +
  `/plugin install kbagent@keboola-claude-kit`, reword the lede that
  called it "the CLI's own marketplace", and refresh the marketplace
  name in the page's provenance comment.
- ai/ai-kit: list `kbagent` alongside the other plugins in the
  "enable the plugins you need" block.

The CLI's on-disk config directory (~/.config/keboola-agent-cli) and
the CLI install instructions themselves are unchanged.
The CLI docs were behind the product: they pointed Windows readers at a
git+https uv install, led with a Storage API token when browser login now
needs none, and said nothing about per-client setup at all.

- cli/getting-started: replace the Windows tab with the canonical
  PowerShell path from keboola/cli's README (winget uv, release wheel,
  `uv tool update-shell`, open a new shell), plus the Git-bash and
  self-contained-zip alternatives and the package-manager warning. Add
  the POSIX PATH note. Rewrite Step 2 to lead with
  `auth login --register-projects` and demote the token to the CI /
  headless route, prompting for it instead of passing `--token`.
- cli/for-agents: add a "Set up your client" section covering Claude
  Code, Claude Desktop, the plugin-less clients (Cursor, VS Code, Codex,
  Devin Desktop) and a plain terminal, and describe `/kbagent:setup` and
  why a plugin slash command cannot be skipped or run in a shell.
- ai/ai-kit: qualify the kbagent install with its marketplace and link
  across to the per-client steps.

Claude Desktop's chat accepting /kbagent:setup is flagged with a VERIFY
comment; it has not been checked against a live build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Tested against live clients on 2026-08-26, which contradicts what the
previous commit assumed: Cursor has a marketplace, Claude Desktop has no
slash-command surface at all, and /kbagent:setup completes nowhere.

- Claude Desktop: no /plugin and no /kbagent:setup ("Unknown command" and
  "/plugin isn't available in this environment"), so its section is the
  manual flow. Menu path corrected to Customise -> Plugins -> Add -> Add
  from marketplace, install via the plus button on the card titled
  "Kbagent". Drops the VERIFY comment the fact replaces.
- Cursor: promoted from the plugin-less group to its own section, with
  the Import from Github full-URL requirement and the useless
  [invalid_argument] Error the short form returns.
- /kbagent:setup: demoted to a shortcut that stops at the sign-in and
  hands you a terminal command, with keboola/cli#704 as the tracking
  issue for in-chat login. The manual sequence is the happy path again.
- Adds the once-per-machine sign-in tip (all clients share the local
  config) and a line on asking the agent in plain language, which the
  plugin's skill handles.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Hand-testing each client showed the plugin installs everywhere, not
only in Claude Code: Claude Desktop, Cursor, VS Code and the ChatGPT
app all read the Claude plugin format that keboola/ai-kit publishes.
The page claimed the opposite for VS Code and Codex, so a reader on
those clients was told to skip the plugin that would have worked.

Each client reaches it differently (short repo form vs full GitHub
URL, a command palette entry, Developer mode), so the routes are
written out per client rather than generalised. The terminal half is
shared, because install, connect and doctor are the same everywhere
and all three need a real TTY.

Also drops the Devin section (hidden from the product's own setup
surface) and adds the marketplace-move step for readers who followed
the old keboola/cli instructions.
Step 2 sent readers to Project Settings → API Tokens to mint a Full
Access token by hand. The UI now has a page that builds the whole
`project add` command for the reader's project and stack, and can put
a scoped read-only token in it, so the docs point there instead of
walking through a token form they cannot fill in for you.

Interactive setups need no token at all, which was the bigger gap:
`project add` signs you in through the browser. The token route stays
for CI and the features that still require a static token.
The install block already had kbagent in it, but the page still
described three plugins and only documented those three, so the one
plugin readers arrive for had no entry. It also claimed
keboola-claude-kit is the only marketplace Keboola operates, which we
cannot vouch for; what matters is that it is the one to install from.

The CLI landing page called the same thing "the Claude Code plugin".
The branch's four CLI pages were written against an older main; merging now so
the review fixes land on top of current content rather than diverging further.
Step 2 told readers `project add` would sign them in through the browser. It
does not. In keboola/cli main `project add` resolves a token from `--token`,
then `KBC_TOKEN`, then a hidden TTY prompt, and errors out. A reader arriving
without a token hit that prompt with nothing on the page telling them what to
type, and this branch had already removed the token-creation walkthrough.

Browser sign-in is the separate `auth login` + `auth register-projects` pair,
so document both routes and say which is which.

The Agentic CLI settings page is feature-flagged off until launch while these
docs deploy on merge, so the token route now also names Settings → API Tokens
as the way in for anyone who cannot see it. Drops the orphaned screenshot the
removed walkthrough used, and the internal VERIFY note that was shipping into
the public page.
The /kbagent:setup section said the command "signs you in", while the sentence
below it and the page's own HTML comment said the browser hands back to a
terminal. keboola/cli#704 settles it: no client completes the sign-in in-chat,
its table marks Claude Code "finishes: no". The command starts the browser
sign-in and the reader finishes it in their terminal.

Drops the customer-facing link to #704. It is an open issue whose title reads
as an admission that the documented flow does not work, and this page links no
other GitHub issues. The reference stays in the HTML comment.

The "other four clients" sentence said they cannot run the command and then
explained they cannot finish its sign-in, so it now just says they cannot run
it and points at the terminal route.

Also:
- `keboola-cli` is a current v1.1.1 project-review toolkit built on the older
  `kbc` sync CLI, not "the unrelated legacy kbc CLI".
- The terminal steps deferred to getting-started's Step 2 rather than forking
  its `project add` example under a different alias, and they no longer repeat
  the "no token needed interactively" claim that `project add` does not honour.
- The sign-in tip contradicted every client section's unconditional "Do the
  terminal steps above", so it is now conditional on `project list`.
- Two provenance comments were attesting reviews that did not cover what sits
  under them: Padak's v0.66.1 review predates the `keboola-claude-kit`
  marketplace, and "verified 2026-07-13" was covering 2026-08-26 claims.
Two pre-existing lines here disagreed with getting-started once Step 2 grew a
browser-login route. The "in one minute" block demanded `--token YOUR_TOKEN`
from a reader who has no token yet, and the page claimed kbagent "never needs
a browser" one section later.

The quickstart now signs in the way Step 2 does, and the browser sentence says
what is actually true: one browser round-trip to sign in, or a Storage API
token to skip it.
This branch pins the page to keboola/ai-kit and asserts a plugin count, so the
count has to be right. The live `keboola-claude-kit` marketplace ships seven
plugins, and none of them is named `developer`. The page promised four, told
readers to run `/plugin install developer`, and linked `plugins/developer`,
which 404s.

Documents the four plugins that were missing (keboola-cli, keboola-git,
sl-toolkit, powerbi-to-sl), drops the Developer Plugin section along with the
intro and best-practice sentences that referred to it, and qualifies every
install string with `@keboola-claude-kit` so they work as written.
The `auth login` lines carried `kbagent-check: skip-next` because the checked-in
reference was v0.76.1, which predates the `auth` group. Bumping it to v0.91.0
removes the reason for all three skips.

The two regressions that bump exposes both resolve by deletion rather than by
guessing at a replacement, which is what made them look risky:

- `kbagent tool` is gone, and "tool" appears nowhere in the v0.91.0 reference.
  Nothing succeeded it, so the three places offering it as a way to call MCP
  tools were offering a command that does not exist.
- `kbagent doctor` now takes no options at all, so `--fix` cannot be described
  as repairing anything. Troubleshooting says what doctor reports and leaves the
  fixes to the manual steps already listed under it.

The `--version` sample moves to v0.91.0 with the reference, and its provenance
comment stops pinning a version it no longer shows. The remaining skips are the
chat prompts, which are prompts rather than commands and always will be.
Removed on Michal's call. This reverses one of Jordan's two conditions for
merging #1015 (PRDCT-490, commit 968e0cb), so it is called out in the PR body
rather than left to be found in a diff.

Nothing else Keboola ships labels kbagent beta: the keboola.com /cli page does
not, keboola/cli's README does not, and the product badges the connect card NEW
where Kai gets a Beta badge. The docs carried the label alone.
TOOLS.md was regenerated on 2026-08-13 (v1.75.4) after the #1061 sweep
(2026-07-30, sha 3848c2f); it now annotates 23 tools read-only, the page
listed 20. The delta: get_shared_buckets (Storage), get_accessible_projects
and set_project_scope (Project). Added them to the Read-Only Tools table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Re-cut of #999 on current main, with the parts the product outgrew corrected.

- Tool visibility: the semantic MCP tools are gated on the project already
  having a semantic model, not on a support-enabled feature flag (the
  mcp-semantic-tooling flag was removed from keboola/mcp-server in 8ab508e2,
  two days after #999 opened). Section order follows: build a model first,
  then use it via MCP.
- Adds the two paths that already exist and were missing: the Semantic Layer
  section in the Keboola UI, and the kbagent semantic-layer command group that
  main already documents in the CLI reference.
- get_semantic_schema reports available schema versions rather than the schema
  document; the table says so and points at kbagent semantic-layer schema.
- Notes that /sl-build and /sl-validate --deep need the kbagent binary on PATH.
- Enablement callout describes availability by stack instead of "contact
  support to enable"; plan-level wording flagged VERIFY(Jordan).
- Extends main's existing "Semantic layer" bullet on the MCP Server page
  instead of adding a second one for the same category.
- Leaves ai/ai-kit/index.md to PR #1095, which already rewrites that page.
- Drops the "don't document semantic layer" clause from the CLAUDE.md
  guardrails, which would otherwise contradict the shipped docs.

Build clean (362 pages); audit-phase2 reports no issues on the touched pages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- "six semantic object types" contradicted this repo's own CLI reference,
  which documents a seventh (semantic-reference-data). Scope the six to what
  makes up a model and name the seventh separately.
- The kbagent note overstated a hard prerequisite: sl-build and sl-validate
  --deep degrade without the binary rather than failing.
- Restore "or push it yourself" to the powerbi-to-sl push sentence, per the
  plugin README.
- Tighten the VERIFY(Jordan) note on the UI section to call out the
  "AI guidance" sentence, which no public source can confirm.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every button in the Kai chat panel is now explained in one place. The
panel header row (new chat, report a bug, settings, expand, close) and
the message box row (upload files, plan mode, follow mode) each get a
table with icons.

Plan mode was advertised in the product and documented nowhere
(PRDCT-654). It is now covered in the chat controls table.

Also replaces the Opening Kai screenshot, adds a screenshot of the
action approval dialog and names all three of its buttons, and folds
the Follow Mode subsection into the table so no control is explained
twice.
…mpts

The new-chat shortcut is Shift + A, not Ctrl + Shift + A.

The Enabling Kai bullets read as sentences instead of dash-separated
fragments.

Example prompts are rewritten from the perspective of a data engineer
arriving at an unfamiliar project or maintaining an existing one:
orientation, lineage, failure diagnosis, and cost and runtime
optimization, rather than "what tables do we have".
Asking Kai to build a Generic Extractor for an API with no ready-made
connector is one of its strongest use cases and was missing from the
example prompts.
It writes a custom integration instead, so the example prompt no longer
names an implementation and simply asks for the data and its
destination.
The glossary pass matches `- **Term** — definition` and converts it to a
two-column grid, but kept the dash it had already consumed for detection,
so every definition rendered as "— definition" while the columns were
already doing the separating.

Affects the 41 built pages that use the pattern; the only visual change
is the leading dash disappearing.
Kai has no web access, so an example prompt that hands it a URL does not
work — the API documentation has to arrive as an attached file. Notes the
constraint where it matters: the upload control, Best Practices, and the
context-files section of Settings.

Report a bug opens a prefilled support-ticket dialog rather than only
collecting debug details.
Every card in Settings → Kai Agent now has a screenshot, and the three
permission levels have their icons.

Tool Permissions says explicitly that the settings are personal, so
nobody blocks a tool believing they have secured it for the team.

System Instructions leads with concrete rules rather than "persistent
context and guidelines", and says which of the three mechanisms to
reach for: instructions for short rules, context files for longer
knowledge, skill files for a procedure you call.

Context Files gains a complete worked example. The section previously
listed four things you could put in a context file without showing one,
even though the format is free-form Markdown.

Skill Files gains how a skill gets called, with the slash-command menu,
and what to write one for.

Also corrects the context-file upload step: the card has no Upload
button, it offers drag and drop or Select Files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The distinction was a subordinate clause in the opening sentence and
never said why it matters. It is now a callout answering the question
directly: a context file is read every conversation and costs context
window space, a skill only when called or matched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Screenshots sat as tight against the surrounding text as a paragraph
does, which reads cramped on image-heavy pages.

Scoped to images that are alone in their paragraph, so table icons
(which sit in <td>) and inline images are unaffected.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
KaroEverling and others added 26 commits September 3, 2026 08:54
docs(kai): document chat controls and refresh Getting Started
- Replace the business-rules/glossary example in the context file with data
  engineering conventions (transformations, integrations); business semantics
  and data model documentation belong in the semantic layer, not here.
- Drop the remaining business-glossary and data-model framing from the System
  Instructions and Context Files prose so the page recommends them nowhere.
- Stop suggesting an API reference as always-on context; point single-task
  reference material at skill files, which load on demand.
- Correct the claim that `description` matters more than anything else in a
  skill file: it is decisive for skills Kai invokes itself (progressive
  disclosure).
- Reference the open Agent Skills format and its best practices for skill
  creators.
Uploaded project skills appear under `/`; Kai's built-in skills are
model-invoked only and are not listed there.
docs(kai): illustrate Kai Settings and explain what each level is for
style(docs): give standalone screenshots room to breathe
…he AI-guidance claim

Jordan's 08-21 ask: refresh the page against the current UI with fresh
screenshots. Three shots from the demo project (europe-west3 /projects/264,
feature semantic-layer on, model 'Active Customer'), captured via Playwright
per shoot.mjs conventions (1600x950, news popup suppressed, expanded sidebar):
model list, model tabs, read-only metric with Edit.

Live verification also settled the VERIFY(Jordan) on this section: the object
view ships NO 'AI guidance' field (the sentence rested only on AI-3616), so it
is cut; the Metadata tab (revision / schema version / branch) is documented
instead. The VERIFY comment is replaced with the verification record.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…th ways

Addresses davidesner's comment on PR #1103: the page listed the UI, the CLI,
and the AI Kit plugins as the ways to build a model, but not Kai, which builds
and maintains models from a chat in the project. Kai now leads the build
section, and the Kai pages point back.

/ai/semantic-layer/
- New "With Kai" build path, first of four: chat-based building with nothing to
  install, the explore-draft-validate-approve order, the approval card naming
  the model and per-type counts, conversational edit/remove/share, and the
  scope rules (project by default, org-wide needs an organization admin).
  Verified against keboola/ui packages/kai-agent-sandbox/skills/
  semantic-layer-building/SKILL.md at main; sourcing recorded in a comment.
  Kai's four write tools themselves stay for PRDCT-671.
- Intro: Kai and the CLI read the definitions too, not only assistants
  connected through the MCP Server.
- "With the CLI": name search-context and get-context, the CLI's read surface.

/kai/
- Semantic Layer capability in "What Kai Can Do", plus a Learn More link.
- Semantic Layer section in Use Cases with build, add-metric, and share
  prompts.

Kept the concepts, object types, and build paths on the one canonical page;
the Kai pages describe the capability in a line or two and link out.

Verified: npm run build clean (363 pages), scripts/audit-phase2.mjs unchanged
(the 29 broken links are pre-existing and on other sections), every new link
and the /kai/getting-started/#action-approval anchor resolves in dist/.
The Kai Agent Terms are cancelled as of 15 Sep 2026 (keboola/keboola_com#562);
Kai is governed by the MSA / Free Plan Terms and the DPA. LangSmith no longer
receives Kai traffic; code runs in ephemeral E2B sandboxes; Keboola keeps
conversation logs for up to 30 days.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
docs: list the new auditLog.users.* security event operations
… Okta, Auth0)

PR #1013 collapsed the four OIDC walkthroughs into a six-step list and a
table; a user setting up Google SSO could not follow it (Slack, 2026-08-07).

- Four how-to pages back at /data-apps/authentication/<provider>/, rewritten
  for the current UI (configuration page, + Create App, App URL block,
  Deploy wizard, Redeploy App), with provider-console click paths checked
  against Google, Microsoft, Okta and Auth0 docs and an "If sign-in fails"
  list per provider.
- Callback URL comes from the App URL block before the app is registered
  with the provider; the July text asked for it before deploy while saying
  it appears only after deploy.
- Hub OIDC section links the guides and keeps a quick provider table;
  Generic OIDC covers other providers. Allowed Roles documented for Entra
  groups (apps-proxy matches them against the `groups` claim).
- Sidebar: guides nested under Run & share -> Authentication.
- Redirects: /data-apps/oidc/<p>/ and /components/data-apps/oidc/<p>/ point
  at the restored pages; two unreferenced images dropped.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The descriptions contain a colon followed by a space, which js-yaml rejects
in an unquoted scalar ("bad indentation of a mapping entry", CI Build on
#1127). Wrapped in double quotes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Checked against the Keboola UI on europe-west3 (project 264) and the
presets in the kbc-ui bundle:

- The App URL block is shown on a never-deployed app, so the "deploy once
  and come back" fallback is gone.
- OIDC (Custom) has dedicated Provider options for Google SSO, Azure OIDC,
  Okta and Auth0 next to Generic OIDC. Okta and Auth0 guides now use their
  own option; Google SSO has no issuer field (preset); Azure OIDC derives
  the issuer from the Tenant ID; Okta's field is "Domain/Org URL"; Logout
  URL is optional everywhere.
- No allowed-roles field exists for OIDC providers in the UI, so the Entra
  guide restricts sign-in via "Assignment required?" on the enterprise app
  instead of a groups claim.
- Form label is "Client secret".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Review feedback: an authentication type is a single choice, so it reads
better as one page with a provider picker than as four sibling pages —
same pattern as the OS tabs on the CLI Get started page.

- authentication.md -> authentication.mdx with Starlight <Tabs>: Google
  Cloud, Microsoft Entra ID, Okta, Auth0, Another provider.
- The steps every provider shares are outside the tabs: Step 1 creates the
  app and copies the callback URL, Step 3 deploys and tests. Each tab holds
  only the provider console, the Keboola fields, and its sign-in errors.
- The four per-provider pages are gone; their 12 old URLs redirect to this
  page again (verified in dist), so the archived links still land here.
- Sidebar: Authentication is a single entry under Run & share.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PRDCT-683: restore per-provider OIDC setup guides for Apps (Google, Entra ID, Okta, Auth0)
docs(kai): drop Kai Agent Terms link, describe E2B and current retention
… credit rates

DuckDB is presented as a SQL backend everywhere in the docs, so customers estimate
its cost from the "SQL job" rates (6/12/26 credits per hour) when the jobs actually
run on data science containers. Nothing on the DuckDB page or on
/management/project/limits/ connected the two, which overstates DuckDB cost by
roughly 15-30x.

- Say up front in Dynamic Backends which backend DuckDB runs on, and that its jobs
  bill as Data Science jobs rather than SQL jobs.
- Add a time-credits column to the backend size table, and link to the matching
  rows and specifications in Project Limits.
- Make the "limited budgets" bullet concrete.

The credit values are inferred from this page's backend sizes matching the
"(Python, R, Components)" specifications exactly; flagged with VERIFY() pending
confirmation before merge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011v2fHawtBBh8wmwsMRuVxi
The credits table on Project Limits is keyed by job type (SQL job, Data Science
job, DataApps) while the backend size table is keyed by technology (SQL, Python,
R, Components, dbt). Neither names the other, so a customer pricing a Python or
DuckDB transformation has nothing to join on. Reported by a customer testing
DuckDB who read the SQL job rates (6/12/26) instead of the data science rates.

Confirmed in #marketing: Python and DuckDB transformations both run on the data
science backend and bill as Data Science jobs.

- Add a "Which job type does your work bill as?" mapping table above the credits
  table, covering transformations, workspaces, data apps and components. Kept as
  a separate table rather than a fourth column, which would force a horizontal
  scroll.
- Name DuckDB in the backend size rows alongside Python and R.
- Correct the intro bullet, which listed job types that have no row in the table.
- Say on the Python and R pages which job type they bill as; both already linked
  to the credits anchor without naming the row to look at.
- Stop calling DuckDB a database server on the transformations overview - it sat
  next to Snowflake and BigQuery, which is what sent the customer to the SQL row.
- Drop the duplicated credit values from the DuckDB page, added in bad7c8d, and
  point to Project Limits instead so the rates have one home. Its VERIFY marker
  is resolved by the confirmation above.
- Add the missing frontmatter description on Project Limits.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011v2fHawtBBh8wmwsMRuVxi
docs: make it clear how DuckDB and Python transformations are billed
# Conflicts:
#	src/content/docs/components/writers/index.md
#	src/content/docs/transformations/index.md
#	src/content/docs/workspace/ad-hoc-analysis/index.md
@Iamfle4ka

Copy link
Copy Markdown
Collaborator Author

Superseded by #1116, which rebuilds Getting Started on the Boolabean sample and puts every task page on the Prompt / UI / CLI tabs. It rewrites or deletes all 19 files this branch added under /getting-started/, so there is nothing left here to land separately. #1116 has been retargeted from this branch onto main.

Closing to keep the queue honest rather than because the work was wrong — the arc, the side-trip filing and the one-prompt experiment all fed the rebuild.

@Iamfle4ka Iamfle4ka closed this Sep 22, 2026

This branch was successfully deployed

1 active deployment
Preview — 4764de03 Deployed Sep 17, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants