# Zahlenwerk Documentation (/en)

Zahlenwerk app

Zahlenwerk is the workspace for investment and fund data: upload documents, keep track of your portfolio and capital calls, maintain master data, and work with AI assistants directly on your data.

## Get started [#get-started] Five steps from your first sign-in to a team that is ready to work. Use Zahlenwerk in Claude, ChatGPT or Cursor. ## What do you want to do? [#what-do-you-want-to-do] Have reports and capital calls read automatically. Positions, cashflows, valuations and history. How TVPI, DPI and IRR are calculated. Due dates, IBAN checks and the payment file. Roles, seats, invitations and access per tool. EU hosting, encryption, backups. ## Help [#help] Can't find something? Search with K or write to [hello@zahlenwerk.studio](mailto:hello@zahlenwerk.studio). # Letterheads & documents (/en/arbeiten/briefboegen) For every company and person in the directory, Zahlenwerk creates Word documents with the name, logo and the legally required details in the footer. ## In the app [#in-the-app] 1. Open the company or person in the **Directory**. 2. Click **Download** and, under **Letterhead**, choose: * **German template (.docx)**: a letter following DIN 5008, * **English template (.docx)**, * **Empty letterhead (.docx)**. For companies, you also get the **KYC dossier (.zip)** there, with the details and documents on file. The footer uses the details from **Legal & registration** and **Address & contact**. Fill in the register court, register number and management so the letterhead is complete. You set your team's document style under . ## In the chat or an AI client [#in-the-chat-or-an-ai-client] "Create a letterhead for Muster Beteiligungs GmbH" works just as well in the AI chat and in connected AI clients. The result is a file to download. # AI chat (/en/arbeiten/chat) The AI chat answers questions about your data and gets tasks done right in your team, such as adding positions, recording cashflows or creating letterheads. ## Start a chat [#start-a-chat] * for a new chat, * **Ask AI** as a side panel next to the current page. Type `/` to run a **skill** (workflows Zahlenwerk has set up for your team), and `@` to refer to a record. ## Modes [#modes] | Mode | What the AI may do | | ------------ | ----------------------------------------- | | **Auto** | Read and write | | **Research** | Read only; this is enforced on the server | Under **Sources**, you can switch off Directory, Portfolio or Bookkeeping for the chat. ## What the chat can do [#what-the-chat-can-do] * Analyze reports, positions, metrics and the directory, * Add or change positions, cashflows, valuations and vesting, * Add companies and people, maintain bank accounts, * Create letterheads, letters and KYC dossiers, * Read bookkeeping reports and code transactions (if bookkeeping is active). Attachments: PDF, Word, Excel, CSV, text and images. Large reports are better uploaded through [Upload documents](/en/arbeiten/dokumente-hochladen). You are talking to an AI assistant. It can make mistakes. Changes made from the chat appear in the history tagged "Chat" and can be reverted. ## Organize chats [#organize-chats] In the sidebar, each chat has the actions **Pin**, **Rename**, **Archive** and **Delete**. You find archived chats under **Archived**. Long chats are summarized automatically. ## Data protection [#data-protection] Without your own AI key, processing takes place in the EU only. With your own key, your provider's terms apply. → [Architecture & data storage](/en/datenschutz-hosting/architektur) Each answer costs 0.05 credits. → [Packages & usage](/en/vertrag/pakete-nutzung) # Upload documents (/en/arbeiten/dokumente-hochladen) Zahlenwerk reads fund documents and creates positions, metrics and cashflows from them. You don't have to type anything in. ## Where to upload [#where-to-upload] | Where | What for | | --------------------------------------------------------------- | ---------------------------------------------------- | | | New fund from a report | | **Add a position** at the bottom right in **Assets** | **Upload a report** dialog | | | Several reports at once | | On a position: **Add a quarterly report** / **Add document** | Another report or document for exactly this position | | | Capital call notice | Drag the files into the field or click to select them. You can upload several files at once. ## File formats and sizes [#file-formats-and-sizes] | What | Formats | Maximum | | -------------------------- | ------------------------- | -------------- | | Reports | PDF, DOCX, XLSX, XLS, CSV | 50 MB per file | | Documents on a position | also PNG, JPEG | 50 MB per file | | Documents in the directory | PDF, Office, images | 25 MB per file | | Logos and photos | PNG, JPEG, WEBP, SVG | about 2 MB | PDFs without a text layer (plain scans) can't be read. Where possible, export the document as a PDF directly from the investor portal. ## What is recognized [#what-is-recognized] * **Quarterly and LP reports**: NAV, called and committed capital, distributions, TVPI, DPI, RVPI, IRR, portfolio companies with value, cost and status, fund terms. * **Capital account statements**: commitment, contributions, distributions, fees, fair value, unfunded commitment. * **Capital call notices**: number, date and due date, amount, equalization interest, share of the commitment, bank details. * **Distribution notices**, as well as contract documents such as an LPA, subscription agreement, SAFE or option agreement (these are classified and filed). ## Before you upload: credits [#before-you-upload-credits] Before sending, Zahlenwerk shows an estimate, e.g. "About 6 credits for 2 files". Click **Upload** to confirm. Details under [Packages & usage](/en/vertrag/pakete-nutzung). A file that is already in your team is recognized ("Already in your library") and not charged again. ## How long it takes [#how-long-it-takes] * Capital call notices: about one minute. * Capital account statements and shorter reports: usually one to two minutes. * Long reports: longer accordingly. You can keep working in the meantime. ## Track the status [#track-the-status] Under , you see every run: | Status | Meaning | | ------------------------ | ------------------------------------------------- | | **Queued** / **Running** | Being processed. | | **Extracted** | Done, the data has been added. | | **Failed** | With a reason; **Retry** starts again. | | **Not applicable** | The document contains no readable fund data. | | **Needs a new file** | The file can't be used, e.g. a scan without text. | Results with low confidence go to [review](/en/arbeiten/pruefung) for a check. ## Collections [#collections] All reports of a fund form a **collection**, which belongs to a fund position. Reports with the same fund name are merged automatically. Matching uses the full legal name. Two funds with almost the same name (e.g. "Fund II" and "Investment II") stay separate. If something was merged or split incorrectly, use **Merge into…** or write to us. # Capital calls (/en/arbeiten/kapitalabrufe) Under , you see all open calls with their due date ("due in 12 days", "due today", "overdue") and, below them, the **Capital call history**. ## How a call gets into the system [#how-a-call-gets-into-the-system] 1. **Upload notice**: upload the capital call notice. Zahlenwerk reads the amount, due date and bank details. 2. The call appears as **Open** in the list and in the position's cashflows. ## Check the bank details [#check-the-bank-details] Zahlenwerk compares the IBAN in the notice with the fund's bank details on file: * **Payee account confirmed**: they match. * **IBAN differs, do not transfer**: clear up the difference directly with the fund. Changed bank details in a notice are a typical fraud pattern. ## Prepare payment [#prepare-payment] **Prepare payment** takes you in three steps to a transfer file for your banking: choose the debit account, check the transfer details, create the file (SEPA XML pain.001, or DTAZV for foreign payments). You upload the file to your online banking. Zahlenwerk itself never triggers a payment. ## Mark as wired [#mark-as-wired] After paying, click **Mark as wired**. Only then does the call count towards Contributed, TVPI and IRR. ## Reminders [#reminders] Zahlenwerk reminds you **14 and 3 days before the due date** and when a call is overdue, in the Inbox and, depending on your settings, by email or in the team chat. → [Notifications](/en/integrationen/benachrichtigungen) # Metrics (/en/arbeiten/kennzahlen) All metrics are calculated from the stored cashflows and the latest valuation, not taken from the figures in the report. That keeps them comparable across all positions. ## Formulas [#formulas] | Metric | Calculation | | ------------------------- | --------------------------------------------------------------------------------------------------------------- | | **Contributed** (paid-in) | Sum of all contributions (subscription, capital calls, fees) | | **Distributed** | Sum of all inflows (distributions, dividends, exit proceeds) | | **TVPI** (= MOIC) | (Distributed + NAV) ÷ Contributed | | **DPI** | Distributed ÷ Contributed | | **RVPI** | NAV ÷ Contributed | | **IRR** | Internal rate of return (XIRR) over all dated cashflows, with the NAV as the final inflow on the valuation date | TVPI, DPI and IRR are calculated for funds, SPVs, direct investments and secondaries. ## Rules that affect the numbers [#rules-that-affect-the-numbers] * **Rolled-forward NAV:** payments after the latest valuation date are added to the NAV. The interface points this out ("Incl. … of cash moved since the … mark"), and value, TVPI and IRR are then considered estimates. * **Open capital calls don't count.** A call is only included once it is **marked as wired**. Cancelled calls never count. * **Foreign currencies:** cashflows in a currency other than the position's are not included and are shown as "events excluded (cross-currency)". ## Reporting currency [#reporting-currency] Under , you choose the currency in which totals are shown. Amounts are converted with the European Central Bank's daily reference rates for the relevant date. Without a choice, Zahlenwerk shows totals per currency. Fund metrics such as TVPI are never averaged across currencies. # Portfolio & positions (/en/arbeiten/portfolio) The **Assets** area shows all your wealth: as a **Dashboard**, as a **Breakdown** by asset class, as a look-through to the **Companies** in your funds, and under **Activities** with capital calls and uploads. ## Position types [#position-types] | Type | Examples | | ----------------------- | --------------------------------------------------------------------------------- | | Fund and SPV | LP interest in a private equity or venture fund, co-investment vehicle, secondary | | Direct investment | Shares in a company | | Convertible instruments | SAFE, convertible loan | | Employee equity | ISO and NSO options, RSU, VSOP, warrant | Property and aircraft are available as add-on modules. Other asset classes are marked "soon" and can't be used yet. ## Add positions [#add-positions] * **From a report** (recommended): upload a quarterly report or capital account statement. Zahlenwerk creates the position. → [Upload documents](/en/arbeiten/dokumente-hochladen) * **In the chat or through your AI client**: describe the position, e.g. "Add a SAFE of USD 50,000 in XY, cap 10 million". → [AI chat](/en/arbeiten/chat) ## A position in detail [#a-position-in-detail] Each position has tabs, depending on its type, including: | Tab | Content | | ----------------------- | ---------------------------------------------------------------------------------------------- | | **Overview** | Metrics and performance | | **Cashflows** | Subscription, capital calls, distributions, dividends, fees, sales; editable directly | | **Valuations** | Values with their source (report, capital account, 409A, financing round, share price, manual) | | **Capital account** | Balance according to the capital account statement | | **Companies** | The fund's portfolio companies | | **Documents** | Reports and contracts for the position | | **Terms** / **Vesting** | Fund terms or vesting schedule | In the header, you set which company holds the position (**Held by**). ## Status [#status] **Active**, **Exited**, **Converted** (SAFE or convertible loan into shares), **Written off**, **Expired**. ## Revert changes [#revert-changes] Every change, including those made by the AI assistant, appears in the position's **History** and can be undone with **Revert**. → [Audit log](/en/team/aktivitaetsprotokoll) ## Export [#export] **Export report** creates an Excel workbook or a PDF report for a period you choose. # Reviewing uncertain results (/en/arbeiten/pruefung) Not every document can be read unambiguously. If Zahlenwerk isn't sure about a result, the numbers are **not** added to your portfolio automatically. Instead, the report goes to the **Needs review** list. ## Where to find the list [#where-to-find-the-list] * In **Tasks** under "Needs review", if you have access to Agents & tools, * otherwise through the **Needs review** entry with a counter in the sidebar. A banner on the affected position points it out: "This report is in review". ## Typical reasons [#typical-reasons] * The fund name or reporting period is missing. * No portfolio companies were recognized. * Amounts might be cumulative rather than periodic. * Another report already covers the fund and period. ## What you do [#what-you-do] | Action | Effect | | ---------------------- | ---------------------------------------------------------- | | **Open** | View the report and the extracted values side by side. | | **Approve** | The values are correct; cashflows and NAV are added. | | **Re-extract** | Read it again, e.g. after you have added the correct file. | | **Archive collection** | The report doesn't belong in your portfolio. | # Directory (/en/arbeiten/verzeichnis) The **Directory** is your team's master data: companies, foundations, people and how they relate. ## Views [#views] | Tab | Content | | ------------------------------- | ----------------------------- | | **Entities** | All companies and foundations | | **People** | All natural persons | | **Org chart** / **Group chart** | Ownership chains as a chart | ## Add and maintain a company [#add-and-maintain-a-company] . A record has the sections **Legal & registration**, **Address & contact**, **People**, **Holdings**, **Bank accounts** and **KYC & compliance**. * **Check register** compares the details with public registers, free of charge. * **Suggest from the web** adds details from the web (2 credits). You have to confirm every suggestion. * **Upload logo**: PNG, JPEG, WEBP or SVG, about 2 MB. Save the record first. ## People and roles [#people-and-roles] On a company, you add **managing directors**, **shareholders** or **board members**, and on foundations **beneficiaries**. Between people, you record **family relations**. ## Beneficial owners [#beneficial-owners] Zahlenwerk determines beneficial owners along the ownership chain under § 3 GwG (more than 25%): | Status | Meaning | | -------------------- | ----------------------------- | | **Provisional** | Calculated, not yet confirmed | | **Confirmed** | Checked by you | | **Chain incomplete** | Ownership details are missing | If no natural person can be determined, a notional beneficial owner under § 3(2) sentence 5 GwG is used. The calculation doesn't replace a legal review. ## Duplicates [#duplicates] **Merge duplicate** combines two records. This can't be undone. # Architecture & data storage (/en/datenschutz-hosting/architektur) Zahlenwerk is a web application operated entirely by Zahlenwerk (software as a service). You install nothing; updates roll out continuously without maintenance windows. ## Components [#components] | Component | Provider | Region | | ------------------------------------------ | ------------------------------- | ---------------------------- | | Application and API | Vercel | Dublin (EU) | | Database, sign-in, file storage | Supabase (AWS) | Ireland (EU) | | Background processing (extracting reports) | runs in the Zahlenwerk database | Ireland (EU) | | AI models | Google Vertex AI (Gemini) | EU (Frankfurt / Netherlands) | | PDF conversion | Modal | EU | | Transactional emails | Postmark | USA | ## AI processing in the EU [#ai-processing-in-the-eu] * Without your own key, AI models are called only in EU regions. If EU processing can't be guaranteed, the call fails instead of falling back to another region. * When documents are extracted, names of people and entities from your directory are replaced with placeholders **before** the AI call and only put back in the result. * Your data is not used to train AI models. ## Tenant separation [#tenant-separation] Each team is its own tenant. The separation is enforced in the database itself (Row Level Security), not just in the interface. AI clients and background jobs, too, see only the data of the team in question. ## Subprocessors [#subprocessors] The binding list is in the data processing agreement (AVV). Beyond the ones above, services are only used if your team actively connects them, such as Microsoft (SharePoint, Teams), Slack or Google Drive, or if you add [your own AI key](/en/datenschutz-hosting/eigene-ki-schluessel). More information: [zahlenwerk.studio/security](https://www.zahlenwerk.studio/security). # Own database (/en/datenschutz-hosting/eigene-datenbank) Own hosting is agreed individually and enabled for your team by Zahlenwerk. After that, the Owner sees the page . ## What lives where [#what-lives-where] | At Zahlenwerk | In your database | | --------------------------------------- | -------------------------------------------------------------- | | Sign-in, teams, permissions, billing | Positions, reports and metrics, valuations, cashflows, vesting | | Uploaded original files | Companies, funds and SPVs, exchange rates | | Encrypted credentials for your database | | ## What you provide [#what-you-provide] * A PostgreSQL database with SSL, reachable from Zahlenwerk's outgoing IP addresses (we'll tell you which). * A role `zw_app` with `SELECT`, `INSERT`, `UPDATE`, `DELETE`. * A role `zw_migrate` with schema privileges. You can revoke it after go-live, but it's needed again for later schema updates. Example SQL is in the wizard under **Before you start: what to provision**. ## The wizard [#the-wizard] ### Connect your database [#connect-your-database] Host, port, database, role, SSL mode (`require`, `verify-full`) and password. Passwords are encrypted as soon as you save them. ### Add the migration role [#add-the-migration-role] Credentials for the `zw_migrate` role. ### Check the connection [#check-the-connection] **Run probe** checks reachability and privileges. ### Create the schema [#create-the-schema] Zahlenwerk creates the tables. ### Copy your data [#copy-your-data] Copies the existing portfolio data in one transaction. Safe to repeat. ### Go live [#go-live] From now on, Zahlenwerk reads and writes portfolio data in your database. The step is refused if the database is unreachable or the schema is out of date. Every step is recorded in the audit log. **Switch back to cloud** switches back to the Zahlenwerk database, but copies **no** data back. The confirmation points this out. Data created while running on your database stays there. Agree on a way back with us beforehand. ## Your responsibility [#your-responsibility] * Availability, performance and backups of the database, * SSL, network allowlisting and securing the roles, * allowing schema updates promptly when Zahlenwerk announces them. If your database is unreachable, portfolio features are unavailable for your team. # Own AI keys (/en/datenschutz-hosting/eigene-ki-schluessel) This option is visible once Zahlenwerk has enabled it for your team. Only the Owner can set it up. With your own key, your team's AI calls run through your own account with the AI provider. ## Set up [#set-up] 1. 2. Choose the **Provider**: Google Gemini (AI Studio), Anthropic Claude or OpenAI. 3. Enter the **API key**, and optionally a **Model**. 4. **Verify and connect**: Zahlenwerk checks the key with a test call and stores it encrypted. It is never shown again. Use **Replace key** to swap it, and **Remove key, back to managed** to return to processing by Zahlenwerk. ## What changes [#what-changes] | | Processing by Zahlenwerk | Own key | | ------------------------ | ------------------------ | ----------------------------------------------------------------------------------------------- | | Cost of AI calls | included in credits | billed directly by your provider; no credits, no cap | | Region | EU only | per your provider's terms, possibly outside the EU | | Role under the EU AI Act | Zahlenwerk | your team becomes the deployer | | Outage | – | If your key fails (e.g. balance used up), AI features stop. There is **no** automatic fallback. | The monthly flat fee or package price stays the same. ## Your responsibility [#your-responsibility] * Contract and data processing agreement with the AI provider, * sufficient balance or payment method with the provider, * rotating and revoking the key when needed. # Security (/en/datenschutz-hosting/sicherheit) ## Encryption [#encryption] * **In transit:** HTTPS only, with HSTS. * **At rest:** The database and file storage are encrypted. Files sit in private buckets and are delivered only through short-lived signed links. * **Third-party credentials** (cloud storage, Slack/Teams, mailboxes, own AI keys, database passwords): envelope encryption with AES-256-GCM. Each value has its own data key, encrypted with a master key in a key vault. Every decryption is logged. ## Access protection [#access-protection] * Passwordless sign-in: Google, Microsoft, magic link or passkey. * Two-factor requirement per team (passkey or TOTP app). → [Two-factor sign-in](/en/team/zwei-faktor) * Daily re-confirmation of your identity. * Roles and permissions per area, set separately for AI clients. → [Roles & permissions](/en/team/rollen) * MCP sign-in via OAuth 2.1 with PKCE; access tokens are stored only as a hash and expire after one year at the latest. ## Traceability [#traceability] Changes are logged with person, time and source (app, chat, MCP). → [Audit log](/en/team/aktivitaetsprotokoll) ## Backups [#backups] * **Database:** daily backup at the hosting provider. A restore returns to the state of a daily backup. * **Documents:** Uploaded files are stored in the hosting provider's file storage in the EU. * **Your own copy:** With [document backup](/en/integrationen/dokumentensicherung), your originals are also stored in your SharePoint or Google Drive. ## Reporting security incidents [#reporting-security-incidents] Please send vulnerabilities or suspected incidents to [hello@zahlenwerk.studio](mailto:hello@zahlenwerk.studio). # Signing in (/en/erste-schritte/anmeldung) Zahlenwerk runs in your browser at [app.zahlenwerk.studio](https://app.zahlenwerk.studio). There is nothing to install. ## Sign-in methods [#sign-in-methods] | Method | How it works | | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | Google | **Continue with Google**: sign in with your Google account. | | Microsoft | **Continue with Microsoft**: sign in with your Microsoft account (Entra ID / Microsoft 365). | | Magic link | Enter your email address and click **Send magic link**. The link in the email is valid for about 10 minutes; then click **Sign in now**. | | Passkey | **Sign in with a passkey**: fingerprint, face recognition or device PIN. | There is deliberately no password sign-in. Invitations are tied to one email address. Sign in with exactly that address, or the invitation shows **Different account**. ## Set up a passkey [#set-up-a-passkey] After you sign in, Zahlenwerk offers to **Add a passkey to this device**. With **Add a passkey**, your next sign-in on this device takes one touch. You can see and remove your passkeys under . ## Daily confirmation [#daily-confirmation] For security, you confirm your identity once a day (the day changes at 4:00 Berlin time): * **With a second factor** (passkey or authenticator app): you see **Confirm it's you** and confirm with your passkey or a 6-digit code. * **Without a second factor**: you are signed out and sign in again. ## Beta access [#beta-access] Zahlenwerk can currently only be used once access is granted. Invited people get access automatically. If you come without an invitation, you see a notice and can join the list at [app.zahlenwerk.studio/waitlist](https://app.zahlenwerk.studio/waitlist). # Interface & language (/en/erste-schritte/oberflaeche) ## Navigation [#navigation] The sidebar on the left is the same everywhere: | Item | Purpose | | ----------------------------- | -------------------------------------------------------------------------------------------------- | | Team picker (at the very top) | Shows the active team and lets you change it (**Switch team**). | | **Create** | Shortcuts: new chat, asset, loan, company, person, **Invite people**. | | **Search** | Search across your data. | | **Directory** | Companies and people. → [Directory](/en/arbeiten/verzeichnis) | | **Assets** | Portfolio, positions, capital calls and uploads. → [Portfolio & positions](/en/arbeiten/portfolio) | | **News** | News about the companies and funds you watch. | | **Bookkeeping** | Books per company, if your package includes them. | | **Banking** | External and internal loans, time deposits. | | **Chats** | Your AI chats, including **Pinned** and **Archived**. → [AI chat](/en/arbeiten/chat) | Which items you see depends on your package and your permissions. Tools you have no access to are hidden. The account menu at the bottom of the sidebar takes you to **Settings**, language, theme, **Legal** and **Sign out**. ## Language [#language] Zahlenwerk is fully available in German and English. Choose the language under or under **Language** in the account menu. If you don't choose one, the language follows your browser. ## Settings at a glance [#settings-at-a-glance] Settings are split into two groups: **Account** (applies to you personally) and a group named after your active team. | Page | Content | Visible to | | ------------------------------------------- | ----------------------------------------------------------------------------------- | -------------------------------------- | | Account › **General** | Profile, language, appearance, reporting currency, sign-in security, delete account | everyone | | Account › **Notifications** | Which notices you get by email | everyone | | Account › **Your teams** | Memberships, new team, archived teams | everyone | | Team › **General** | Team name, MFA requirement, audit log, owner zone | Owner, Team Admin | | Team › **Members** | Members, seats, invitations, access rights | everyone (managing: Owner, Team Admin) | | Team › **Design** | Team logo and document style | Owner, Team Admin | | Team › **Integrations** | Document backup, chat notifications, mailboxes, webhooks | Owner, Team Admin | | Team › **MCP** | Connect AI clients, access tokens | everyone | | Team › **Usage**, **Packages**, **Billing** | Consumption, package, contracts and invoices | Owner, Team Admin | # Quick start (/en/erste-schritte/schnellstart) This page walks you through setup once. The details are on the linked pages. ### Sign in [#sign-in] Open [app.zahlenwerk.studio](https://app.zahlenwerk.studio) and sign in with Google, Microsoft, a magic link or a passkey. There is no password. → [Signing in](/en/erste-schritte/anmeldung) ### Create a team or accept an invitation [#create-a-team-or-accept-an-invitation] If you were invited, open the link in the invitation email and click **Accept invitation**. Otherwise, create a team under **Create a team** when you first sign in. Zahlenwerk approves new teams. → [Managing teams](/en/team/teams-verwalten) ### Accept the agreements [#accept-the-agreements] The team's owner accepts the terms of service and the data processing agreement (AVV) once. All other members can start working right away. → [Agreements](/en/team/vereinbarungen) ### Turn on two-factor login [#turn-on-two-factor-login] Under you require a second factor for all members. We recommend this for every team. → [Two-factor login](/en/team/zwei-faktor) ### Invite members and get started [#invite-members-and-get-started] Under you invite colleagues with a role. Then upload your first documents or connect your AI client. → [Roles & permissions](/en/team/rollen) · [Connect AI clients](/en/ki-clients) # Notifications (/en/integrationen/benachrichtigungen) Zahlenwerk reports capital calls coming due, expired connections and other events in three places: * in the app's **Inbox** (always everything), * by **email** (set per person), * in the **team chat** in Slack or Microsoft Teams (for the whole team). ## Email: personal settings [#email-personal-settings] Under , you choose **Instant**, **Daily digest** or **Off** for each type. | Notification | Email (default) | Team chat (default) | | --------------------------------- | --------------- | ------------------- | | Capital call coming due / overdue | Instant | Instant | | Capital call notice read / wired | Digest | Off | | Connection stopped working | Instant | Instant | | Loan payment | Instant | Instant | | Invoice unpaid | Instant | Off | | Close a quarter | Digest | Off | | Close a fiscal year | Instant | Instant | | Task assigned | Instant | Off | ## Connect Slack or Microsoft Teams [#connect-slack-or-microsoft-teams] Owners and Team Admins, under : 1. For Slack or Microsoft Teams, click **Connect** and approve with the provider. 2. **Choose a channel** and **Save channel**. 3. **Send test message** checks the connection. You can use one channel per provider. Messages go to the whole team, regardless of personal settings. | Provider | Requested permissions | | --------------- | --------------------------------------------------------------------------------------------------- | | Slack | `chat:write`, `channels:join`, `channels:read`, `groups:read` | | Microsoft Teams | `ChannelMessage.Send`, `Channel.ReadBasic.All`, `Team.ReadBasic.All`, `User.Read`, `offline_access` | If the tile shows **Needs attention** or **Reconnect**, the connection has expired or was removed at the provider. Connect again. # Document backup (/en/integrationen/dokumentensicherung) Document backup places a copy of every uploaded document in your team's cloud storage. That way, you always have your originals in your own environment too. Owners and Team Admins can set it up, under . ## Set up [#set-up] ### Connect a provider [#connect-a-provider] **Connect SharePoint** or **Connect Google Drive**. You sign in with the provider and approve. Each team can use one storage. ### The folder is created [#the-folder-is-created] Zahlenwerk creates the folder `/Zahlenwerk` and writes **only** into it, sorted by `funds////`. ### Transfer existing files [#transfer-existing-files] **Back up existing files** also copies documents that were uploaded before you connected. ## Options [#options] | Switch | Default | Effect | | ----------------------------------------- | ------- | ---------------------------------------------------------------------------------- | | **Back up new uploads** | on | New uploads are copied. | | **Pick up files added to the folder** | off | Files you put into the folder are pulled into Zahlenwerk and classified. | | **Let folder moves reclassify documents** | off | Moving files in the folder changes how they are assigned in Zahlenwerk (advanced). | ## Permissions [#permissions] Zahlenwerk requests delegated permissions: `Files.ReadWrite.All`, `Sites.ReadWrite.All`, `User.Read`, `offline_access`. In many Microsoft 365 environments, an administrator has to approve these permissions (admin consent). Plan this with your IT. Zahlenwerk only uses `drive.file`: access only to files Zahlenwerk created itself. The rest of your Drive stays invisible. Files you put into the folder some other way may therefore not be visible to Zahlenwerk. The credentials for the storage are stored encrypted in the vault. → [Security](/en/datenschutz-hosting/sicherheit) Copies in your storage belong to you. Zahlenwerk doesn't delete them, not even after the contract ends. If the provider shows **Not available yet**, the integration hasn't been enabled for your environment yet. Get in touch with us. # Webhooks (/en/integrationen/webhooks) Webhooks send an HTTP request to your own system when certain events happen, for example to a data warehouse or an automation tool. Owners and Team Admins can set them up, under : enter the **Endpoint URL** and an optional **Description**, then click **Add webhook**. Zahlenwerk then shows the signing secret (starts with `whsec_`) **once**. Copy it into your system right away. ## Events [#events] | Event | When | | -------------------- | ------------------------------- | | `report.parsed` | A report was read successfully. | | `report.failed` | Reading a report failed. | | `document.extracted` | A document was read. | | `position.created` | A position was created. | ## Verify the signature [#verify-the-signature] Every request carries the header: ```http Zahlenwerk-Signature: t=,v1= ``` `v1` is an HMAC-SHA256 over `"."`, keyed with your webhook's secret. Verify the signature and reject requests older than five minutes. ```ts import { createHmac, timingSafeEqual } from 'node:crypto'; export function verify(header: string, body: string, secret: string) { const parts = Object.fromEntries(header.split(',').map((p) => p.split('='))); const expected = createHmac('sha256', secret).update(`${parts.t}.${body}`).digest('hex'); const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < 300; const given = Buffer.from(parts.v1 ?? ''); return fresh && given.length === expected.length && timingSafeEqual(Buffer.from(expected), given); } ``` ## Requirements [#requirements] * HTTPS endpoints only. * Internal and private addresses are rejected. There is no general REST API. For read and write access, use the [MCP endpoint](/en/ki-clients). # Connect Claude (/en/ki-clients/claude) The setup applies to Claude in the browser, Claude Desktop and the Claude app; the connector syncs with your Claude account. Custom connectors are available on paid Claude plans. In Team and Enterprise organizations, an administrator may need to allow the connector. ### Add the connector [#add-the-connector] In Claude, open and click **Add custom connector**. ### Enter the URL [#enter-the-url] Name: `Zahlenwerk`, URL: ```text https://app.zahlenwerk.studio/api/mcp ``` ### Sign in and approve [#sign-in-and-approve] Claude opens Zahlenwerk in the browser. Sign in and confirm **Connect Claude**. ### Test it [#test-it] In a new chat, write: "List my report collections in Zahlenwerk." ## Upload documents from Claude (optional) [#upload-documents-from-claude-optional] For Claude to hand files directly to Zahlenwerk, it needs network access to the storage: , and allow `*.supabase.co` there. Without this, you upload documents in the app and use Claude only for analysis. ## Claude Code [#claude-code] ```bash claude mcp add --transport http zahlenwerk https://app.zahlenwerk.studio/api/mcp ``` On first use, the sign-in opens in the browser (`/mcp` in Claude Code shows the status). ## Disconnect [#disconnect] In Zahlenwerk, under , click **Revoke** next to Claude. All access for this app ends immediately. # Troubleshooting (/en/ki-clients/fehlerbehebung) * Check the URL: `https://app.zahlenwerk.studio/api/mcp`, with no trailing slash. * Sign in to Zahlenwerk in the same browser first, using the account that has access to the team. * If a company policy blocks custom connectors, your IT needs to allow the connector. * Are you in several teams? The assistant asks which team you mean. Name it explicitly. * Has your Owner set your AI access to **No AI access**? You can see this on the members page. * Do you have access to the area in the app (e.g. Assets)? The record belongs to another one of your teams. Nothing was changed. Confirm to the assistant that it should switch to that team. Your AI access is set to **Read-only**, your role is Viewer, or the chat runs in a read-only mode. Owners and Team Admins can change this under **Members**. In Claude, under , allow the domain `*.supabase.co`. Or upload in the app instead. Never paste large files into the chat as Base64. The limit of 240 requests (40 writes) per minute has been reached. Good clients wait automatically; otherwise, wait a minute. Uploads and analyses stop until credits reset in the new month or extra credits are approved. → [Packages & usage](/en/vertrag/pakete-nutzung) Nothing helps? Write to [hello@zahlenwerk.studio](mailto:hello@zahlenwerk.studio) with the client, the time and the error message. # Connect AI clients (/en/ki-clients) With the MCP endpoint, you work with your Zahlenwerk data right inside the AI assistant you already use: ask questions about the portfolio, upload reports, create positions, generate letterheads. ## Connection URL [#connection-url] ```text https://app.zahlenwerk.studio/api/mcp ``` You find the URL with a copy button under . ## Two ways to sign in [#two-ways-to-sign-in] | | OAuth (recommended) | Access token | | -------- | ------------------------------------------------------- | ----------------------------------------------------- | | For | Claude, ChatGPT and other clients with a sign-in dialog | Clients without OAuth, scripts, developer tools | | Setup | Enter the URL, sign in in the browser, approve | Create a token in Zahlenwerk and add it to the client | | Lifetime | Renews automatically until you disconnect | 30 days, 90 days or 1 year | | Revoke | **Connected apps** › **Revoke** | **Access tokens** › **Revoke** | → [Connect Claude](/en/ki-clients/claude) · [Other clients](/en/ki-clients/weitere-clients) · [Access tokens](/en/ki-clients/zugriffstoken) ## Permissions [#permissions] An AI client always acts as you and can **never do more than you can** in the app. Owners and Team Admins can restrict this further for individual members (**Read-only** or **No AI access**). → [Roles & permissions](/en/team/rollen#access-through-ai-clients) Changes made through MCP show up in the history marked "via MCP" and can be undone. ## Several teams [#several-teams] The connection belongs to you, not to a team. If you are a member of several teams, the assistant asks which team to work with the first time it accesses data in a chat, and sticks with it for that chat. In a new chat it asks again. With only one team, it doesn't ask. ## Limits [#limits] * 240 requests per minute per connection, at most 40 of them writes. * Uploads and analyses use credits just as in the app. The assistant can check your balance with `get_usage`. # Other clients (/en/ki-clients/weitere-clients) Zahlenwerk speaks standard MCP over HTTP (Streamable HTTP). Any client that supports remote MCP servers can connect. ## Clients with OAuth [#clients-with-oauth] Add the URL as a remote MCP server or connector: ```text https://app.zahlenwerk.studio/api/mcp ``` The client discovers the sign-in on its own (OAuth 2.1 with PKCE, dynamic client registration). You sign in in the browser and approve. This applies, for example, to **ChatGPT** (connectors in developer mode, depending on the plan) and many developer tools. Where exactly the setting lives changes often at the providers; their own help is authoritative. ## Clients without OAuth [#clients-without-oauth] Create an [access token](/en/ki-clients/zugriffstoken) and pass it as a header: ```http Authorization: Bearer zw_pat_… ``` In `~/.cursor/mcp.json` (or `.cursor/mcp.json` in the project): ```json { "mcpServers": { "zahlenwerk": { "url": "https://app.zahlenwerk.studio/api/mcp", "headers": { "Authorization": "Bearer zw_pat_…" } } } } ``` Most clients use the same schema: ```json { "mcpServers": { "zahlenwerk": { "type": "http", "url": "https://app.zahlenwerk.studio/api/mcp", "headers": { "Authorization": "Bearer zw_pat_…" } } } } ``` Don't put configuration files containing a token into a shared repository. Whoever has the token acts with your permissions. # Available tools (/en/ki-clients/werkzeuge) The AI client picks the tools itself. You just describe what you need. This overview helps you judge what's possible. Tools that write are marked with ✎. ## Teams and usage [#teams-and-usage] | Tool | Purpose | | --------------- | ----------------- | | `list_my_teams` | List your teams | | `get_usage` | Remaining credits | ## Reports [#reports] | Tool | Purpose | | -------------------------------------------------------------------- | ------------------------------------------------ | | `list_collections`, `get_collection`, `find_collection_by_fund_name` | Find and read collections | | `get_report`, `list_report_companies` | Fund metrics and portfolio companies of a report | | `create_report_upload_url` → `finalize_report_upload` ✎ | Upload a report and have it extracted | | `create_collection`, `update_collection` ✎ | Create or rename a collection | | `delete_report` ✎ | Delete a report permanently | ## Portfolio [#portfolio] | Tool | Purpose | | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | `portfolio_summary`, `list_positions`, `get_position`, `get_company` | Read portfolio and positions | | `list_valuations`, `list_position_events` | Valuations and cashflows | | `create_fund_lp_position`, `create_direct_equity_position`, `create_safe`, `create_spv`, `create_option_grant`, `create_share_account`, `convert_note` ✎ | Create or convert positions | | `record_contribution`, `record_cashflow`, `add_valuation`, `record_position_event`, `update_position_event`, `delete_position_event` ✎ | Record capital calls, distributions, valuations | | `update_position`, `set_position_status`, `set_position_holder`, `set_vesting_schedule`, `delete_vesting_schedule` ✎ | Change positions | ## Bank accounts [#bank-accounts] | Tool | Purpose | | ----------------------------------------------------------------------------------------- | --------------------------------- | | `list_entity_bank_accounts` | Bank accounts of an entity | | `add_entity_bank_account`, `archive_entity_bank_account`, `set_position_paying_account` ✎ | Maintain and assign bank accounts | ## Directory and documents [#directory-and-documents] | Tool | Purpose | | ------------------------------------------------------------------------------------------------ | ------------------------------ | | `list_directory_entities`, `list_directory_people` | Search the directory | | `create_directory_entity`, `create_directory_person` ✎ | Create entries | | `generate_letterhead`, `generate_person_letterhead`, `generate_letter`, `generate_person_letter` | Letterhead or letter as a file | | `generate_dossier` | KYC dossier as a ZIP | ## Bookkeeping [#bookkeeping] | Tool | Purpose | | -------------------------------------------------------------------------------- | ------------------------------------------------- | | `list_books`, `list_transactions` | Books and transactions | | `get_trial_balance`, `get_profit_and_loss`, `get_tax_report`, `get_cost_centres` | Trial balance, profit and loss, VAT, cost centres | | `code_transaction` ✎ | Code a transaction | The machine-readable, always current list is at [app.zahlenwerk.studio/llms.txt](https://app.zahlenwerk.studio/llms.txt). # Access tokens (/en/ki-clients/zugriffstoken) You only need access tokens for clients without a sign-in dialog. For Claude and ChatGPT, OAuth is enough. ## Create a token [#create-a-token] 1. 2. Enter a **Name** (e.g. "Cursor laptop") and choose **Expires**: 30 days, 90 days (default) or 1 year. 3. Click **Create token** and copy the token right away. The token starts with `zw_pat_` and is **shown only once**. Zahlenwerk stores only a hash; we can't recover a lost token. Create a new one instead. ## Rules [#rules] * A token has exactly your permissions, never more. * At most 10 active tokens per person. * There is no token without an expiry date. ## Revoke [#revoke] On the same page, click **Revoke** next to the token. It stops working immediately. Revoke tokens from devices you no longer use, and when someone leaves the team. # Audit log (/en/team/aktivitaetsprotokoll) ## Team-wide log [#team-wide-log] Owners and Team Admins open it under . It records changes to data, members, settings and integrations, with the person and the time. Each entry shows where the change came from: the app, the AI chat, or a connected AI client (MCP). ## History of a position [#history-of-a-position] Every position has its own **History** panel ("Who changed this record, and what they changed"). With the **Revert** arrow you undo a change, even one made by an AI assistant. Every member with write access can revert. # Inviting members (/en/team/mitglieder) Owners and Team Admins can invite. ### Send an invitation [#send-an-invitation] Open (or **Create › Invite people**). Enter the **Email**, choose the **Role** (default: Editor) and click **Send invite**. ### Accept the invitation [#accept-the-invitation] The invited person gets an email with a link. They sign in **with exactly that email address** and click **Accept invitation**. ## Open invitations [#open-invitations] * Invitations are valid for **7 days**. * **Resend** sends the email again, **Revoke** withdraws the invitation. * If the team is full, you see **This team is full**. Invite the person as a Viewer instead, or free up a seat. ## Removing members or leaving a team [#removing-members-or-leaving-a-team] * Owners and Team Admins remove members on the members page. * To leave yourself, click **Leave team…** and confirm with **Confirm leave**. The owner must transfer ownership first. Data a member created stays in the team. # Roles & permissions (/en/team/rollen) Each team is its own workspace. One team's data is not visible to other teams, even if the same person is a member of several teams. ## The four roles [#the-four-roles] | Permission | Viewer | Editor | Team Admin | Owner | | -------------------------------------------------------------------------------- | :----: | :----: | :--------: | :---: | | Read data | ✓ | ✓ | ✓ | ✓ | | Create, change, delete data | – | ✓ | ✓ | ✓ | | Invite and remove members, set roles and access | – | – | ✓ | ✓ | | Audit log, usage, packages, billing, design, integrations, MFA requirement | – | – | ✓ | ✓ | | Transfer ownership, archive or delete the team, own AI key, reset a member's MFA | – | – | – | ✓ | * Every team has exactly one **Owner**. The owner cannot be removed. * A **Team Admin** can only remove Editors and Viewers, and can only switch members between those two roles. ## Seats [#seats] Your package includes a number of seats. The members page shows how many are taken, e.g. "3 of 5 seats". * **Viewers do not take a seat.** You can invite as many people with read access as you like. * Open invitations for other roles already reserve a seat. * Moving someone from Viewer to Editor needs a free seat. ## Access per tool [#access-per-tool] Under , open **Choose their access** for a member: * **Every tool, following their role**: the member may do everywhere what their role allows. * **Choose per tool**: for each tool (Directory, Assets, News, Agents & Tools, Bookkeeping, Banking) you choose **No access**, **Read** or **Edit**. Tools without access disappear from the navigation. ### Access through AI clients [#access-through-ai-clients] Separately, you set what a member may do through connected AI clients (MCP): | Setting | Effect | | -------------------------------------- | ------------------------------------------------------------------ | | **Same as their app access** | Same as in the app. | | **Read-only, whatever the app allows** | AI clients may only read, even if the member can write in the app. | | **No AI access** | No connection over MCP. | ### External members [#external-members] Members can be marked as **Internal** or **External**. External members get a badge and, optionally, an end date. On that date they are removed from the team automatically, which is handy for tax advisors or auditors with time-limited access. # Managing teams (/en/team/teams-verwalten) ## Create a team [#create-a-team] * **When you first sign in:** the **Create a team** card; enter a team name, accept the agreements, **Create team**. * **More teams:** . Zahlenwerk approves new teams. Until then you see **Your team is awaiting approval**. ## Switch teams [#switch-teams] Click the team name at the top of the sidebar and choose **Switch team**. If you open a link that belongs to another of your teams, Zahlenwerk asks whether you want to switch. ## Transfer ownership [#transfer-ownership] Under the owner clicks **Transfer ownership…** and confirms. The previous owner becomes a Team Admin. The transfer also works when all seats are taken. ## Archive and delete [#archive-and-delete] 1. **Archive team…** in the owner zone archives the team. It is then hidden for all members. 2. Under the owner can choose **Restore** or **Delete forever…**. To delete, the owner types the exact team name. Deleting removes all of the team's data irreversibly. While retention periods are running for an ended contract, deletion is blocked. ## Delete your own account [#delete-your-own-account] . To confirm, type `delete my account` (in the German interface `mein Konto löschen`). Deletion is refused while you are the owner of a team. Transfer ownership first. # Agreements (/en/team/vereinbarungen) Before a team uses Zahlenwerk, the **owner** confirms on the team's behalf: * the **terms of service**, * the **data processing agreement (AVV)** under Art. 28 GDPR, * that they have read the **privacy policy**. ## How it works [#how-it-works] 1. When the owner signs in, they are taken to the **Terms and privacy** page. 2. They tick the checkbox and click **Accept and continue**. All other members keep working as normal in the meantime. They only see a notice that the owner still needs to confirm. Nothing is needed from them. If one of the documents changes, Zahlenwerk asks again. The confirmation is stored with the version and the time. If you create a new team, you accept the agreements right when you create it. For customers with a master services agreement (MSA) and a statement of work, those contracts apply as well. You find them under . # Two-factor login (/en/team/zwei-faktor) ## Require MFA for the team [#require-mfa-for-the-team] Owners and Team Admins turn on the requirement under . From then on, every member sets up a second factor at their next sign-in. The requirement applies to the person, not just to one team: if any of their teams requires MFA, they sign in with a second factor everywhere. ## Set up a second factor [#set-up-a-second-factor] The **Set up two-factor login** page offers two ways: **Use this device**: fingerprint, face recognition or device PIN. A passkey meets the MFA requirement on its own and is the fastest option. **Use an authenticator app**: e.g. Microsoft Authenticator, Google Authenticator, 1Password or any other TOTP app. 1. Scan the QR code with the app (or use **Can't scan?** and enter the key shown). 2. Enter the 6-digit code. 3. **Verify and continue**. You manage your factors under . There you add more passkeys with **Add a passkey**, for example for a second device. ## Lost device [#lost-device] * **Member:** the owner opens and clicks **Reset MFA** for the member. At their next sign-in, the member sets up a new factor. * **The owner themselves:** write to [hello@zahlenwerk.studio](mailto:hello@zahlenwerk.studio). We reset the factor after checking with you. Set up two factors, e.g. passkeys on your laptop and your phone. Then a lost device won't lock you out. # Documentation versions (/en/vertrag/dokumentationsstand) The website always shows the current edition. For acceptance under a statement of work, a fixed version is handed over as a PDF and archived. | Version | Date | Changes | | ------- | ----------------- | ----------------------------------------------------------------------------------------------------------- | | 1.0 | 16 September 2026 | First edition: setup, team & security, working with Zahlenwerk, AI clients, integrations, privacy & hosting | You receive the PDF edition of a version with the request for acceptance, or on request at [hello@zahlenwerk.studio](mailto:hello@zahlenwerk.studio). # Scope of services (/en/vertrag/leistungsumfang) ## This documentation as part of the contract [#this-documentation-as-part-of-the-contract] Statements of work for the Zahlenwerk app list **short technical documentation and setup instructions** as a deliverable. This site is that documentation. * **Online** at docs.zahlenwerk.studio you always find the current edition. * **For acceptance** you receive a dated PDF edition with a version number. The version handed over is what counts for acceptance. → [Documentation versions](/en/vertrag/dokumentationsstand) If there is a conflict, the master services agreement (MSA), the statement of work and the data processing agreement (AVV) take precedence over this documentation. ## Feature areas and where they are described [#feature-areas-and-where-they-are-described] | Feature area | Pages | | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AI-assisted chat workspace | [AI chat](/en/arbeiten/chat) | | Directory of legal entities and people | [Directory](/en/arbeiten/verzeichnis) | | Letterhead and footer generator | [Letterheads & documents](/en/arbeiten/briefboegen) | | Portfolio and position overview with metrics | [Portfolio & positions](/en/arbeiten/portfolio), [Metrics](/en/arbeiten/kennzahlen) | | Document upload with extraction and review queue | [Uploading documents](/en/arbeiten/dokumente-hochladen), [Review](/en/arbeiten/pruefung) | | Capital call tracking | [Capital calls](/en/arbeiten/kapitalabrufe) | | Team features and team settings | [Roles & permissions](/en/team/rollen), [Members](/en/team/mitglieder), [Managing teams](/en/team/teams-verwalten), [Audit log](/en/team/aktivitaetsprotokoll) | | Team MFA and approved access | [Two-factor login](/en/team/zwei-faktor), [Signing in](/en/erste-schritte/anmeldung) | | Personal MCP endpoint | [Connect AI clients](/en/ki-clients) | | Cloud drive mirror | [Document backup](/en/integrationen/dokumentensicherung) | | Own AI keys, own database, encrypted credentials | [Own AI keys](/en/datenschutz-hosting/eigene-ki-schluessel), [Own database](/en/datenschutz-hosting/eigene-datenbank), [Security](/en/datenschutz-hosting/sicherheit) | ## Not included [#not-included] Training, migration scripts and custom analyses are not part of the documentation. On request, they are provided separately and billed by effort. Features marked "soon" or "prototype" in the app are not described here, or only as an outlook. # Packages & usage (/en/vertrag/pakete-nutzung) AI-assisted processing (reading documents, research, chat) is measured in **credits**. Your package includes a monthly amount. ## What costs credits [#what-costs-credits] | Action | Credits | | -------------------------------------------------------------------------------------------- | ------------------------------------------------- | | Reading a document, per pass (overview, company, capital account, capital call, Word, Excel) | 1 | | PDF conversion | free up to 10 pages, then 1 per started 100 pages | | Reading a receipt or invoice, repayment schedule | 1 | | Research on a company, market or fund family, **Suggest from the web** | 2 | | Chat answer | 0.05 (a little more for very long chats) | | Chat titles, summaries, news check, inbox sorting | 0 | Rough guide: a 20-page capital account statement costs about 3 credits, a 170-page quarterly report about 5. With your [own AI key](/en/datenschutz-hosting/eigene-ki-schluessel), AI calls use no credits. ## See your consumption [#see-your-consumption] * **Quick look:** click the team name at the top of the sidebar to see **Usage**, the credits left and the days until they reset. * **Details:** (Owners and Team Admins) with six months of history, broken down by feature. ## Resets and limits [#resets-and-limits] * Included credits reset on the **1st of every month**. Unused credits expire. * Under **Extra credits you allow** you set how much may be used beyond that, or ask for more with **Ask for a higher ceiling**. * When all credits are used up, uploads and AI features stop until the next month or until more credits are approved. Your data stays readable. ## Packages and billing [#packages-and-billing] Owners and Team Admins see your current package and possible upgrades under , and contracts and invoices under . # Support & updates (/en/vertrag/support) ## Contact [#contact] Write to [hello@zahlenwerk.studio](mailto:hello@zahlenwerk.studio). It helps to include: * your team and the page concerned (the link from the address bar), * what you expected and what happened, * for documents: the file name and the time of the upload, * for AI clients: which client, and the error message. Don't send us passwords, tokens or API keys. ## Updates [#updates] Zahlenwerk is developed continuously. New versions go live without maintenance windows; you don't need to do anything. We announce changes that affect your rights or obligations, such as changes to the terms of service, the data processing agreement (AVV) or subprocessors, to your team's owner by email in advance. ## This documentation [#this-documentation] Every page has **Copy Markdown** and **Open** (in Claude or ChatGPT) at the top, so you can ask your assistant questions about the page directly. For AI tools, the whole documentation is available as text at [/en/llms-full.txt](/en/llms-full.txt).