How can you query GDPdU in German (or any other language)?
AI provides incredible flexibility to query data, GDPdU included, allowing the work to meet German regulations of data residency and privacy.
Answering one question, such as what was posted to an account after the balance sheet date, has normally meant importing the entire export into an analysis tool and writing formal queries. On top of that, answers to complex questions had to be broken into single-step queries.
Our GDPdU agent allows you to ask complex questions in plain language (German, or any other), queries on your behalf, and provides the tracking behind its answer so you can verify it.
Key takeaways
- GDPdU over a Jira implementation meets German regulatory requirements.
- In place of the auditor, the agent maps all the data based on the index file, and can support complex questions.
- Auditors can query the data using spoken language, German or English.
- Answers and the agent’s work can be tracked and reviewed.
- The AI component is never exposed to the full data set and never trains on the data.
What is actually inside a GDPdU export?
Flat files, and a description of those files. A GDPdU export is Germany’s standard way of handing accounting records over in machine-readable form: a folder of flat text files plus an index.xml that says what every column in them means. The format exists because German tax law gives the authority a choice about how it inspects a company’s books during an audit: read them on the company’s own system, have the company run the queries and hand over the results, or take the data away on a machine-readable carrier (§ 147 Abs. 6 AO). The third route is the one that gets used. DATEV produces the export as routine, and other accounting systems, ADDISON among them, produce their own conformant version of the same thing.
Audit firms end up with the same file for a different reason. It is the one extract a client’s accounting system already knows how to produce in full, so asking for it is easier and less error-prone than asking for a list of specific reports and hoping the definitions match.
Why does one question about it take so long?
The question is rarely the hard part. Getting into a position to answer it is. The files are one row per record with coded columns, and what those columns mean lives in the index.xml rather than in the data. The working method has been to load the whole thing into an analysis tool built for the job, map the fields by hand, and write a formal query there.
A second cost sits on top of that one, and it is the one auditors feel more often. An analysis tool answers a query, not a question, so anything with several parts to it has to be taken apart first: run one query, read the result, use it to write the next, and reconcile the pieces yourself at the end. Ask which accounts carry postings after the balance sheet date that were not present at the interim review, and you are writing three queries and joining them by hand.
Keep working where your auditors are
Using the agent to meet the auditors where they are helps avoid context switching and keeps all the information tight around the audit itself. An auditor asks inside the Jira issue, gets the answer, and when it is approved the answer is saved in the stream of the ticket.
Later, a reviewer can see exactly what was analyzed, how and why, in the full context of the audit’s data.
Jira is one interface onto the agent rather than the whole of it. The flow set out here is a selected user interface, and the agent can sit behind a different front end. What does not move is the part underneath: the files, the queries, and the trail they leave.
How does the GDPdU agent work?
What follows is the Jira interface example, and it can generally be expanded to meet additional requirements. Four moving parts, in order. It is a Forge app, so it runs on Atlassian’s own infrastructure inside your site. A trigger picks up the export when it arrives and reads the data files and the index file describing them, which is how the agent knows what data it can be asked about.
When a question comes in, the model turns it into queries and those queries run against the loaded data and not inside the model. Results come back capped, and the model reads the capped set to judge whether it has satisfied the question or if more queries are needed. That loop is what answers a multi-part question without an auditor stepping through it manually, and it is also why the model never has the whole file in front of it. The answer, and the queries behind it, are written back into the issue through Forge.
The loading of the files that used to take a couple of hours happens automatically on the GDPdU agent’s side, once, with nobody mapping fields. Formats follow from the standards available in the market, and more can be added.
What are the security measures for the GDPdU agent?
Four of them, and the first matters most to an auditor. Every answer arrives with the queries that produced it, so the reasoning is reviewable rather than asserted. Anyone who doubts a figure can read what was asked of the data and put the same question again. A number with no working behind it does not belong in an audit file, whatever produced it.
The models are Anthropic’s, picked for the terms attached to them. Anthropic’s published commercial terms rule out training on customer content, and nothing from an exchange is held by the model once the conversation is over. A client’s records are read in order to answer the question in front of them and are not accumulated on the model side afterwards.
On a longer run the agent keeps track of its own behaviour. Where the work starts to stretch, it goes back to the auditor to confirm it is still answering the question that was asked, which is the mechanism that keeps it from drifting off the question or hallucinating an answer.
Hosting stays in Germany. Every component of the app is pinned to Frankfurt (data residency), and the infrastructure behind it sits in Germany too, so a client’s accounting records are not leaving the country in the course of being queried. For a practice holding those records under § 147 that is a requirement rather than a preference, and it deserves asking of any tool that touches a client’s books, together with which models see the data and what their provider is permitted to do with it.
What can it not answer?
Anything outside the export. The file is a snapshot of what the client’s system held on the day it was produced, so a question about a posting made since then needs a fresh one. It carries the accounting records and their field descriptions, not the contracts, the correspondence or the minutes those records refer to, and no amount of asking well will conjure those in.
It does not form a judgment either. Returning the entries posted after the cut-off is a query. Deciding whether those are a cut-off error, a legitimate adjustment, or a reason to widen the sample is audit work, and the argument for getting the query back in seconds is that more of the day is left for the part that needs an auditor.
And it does not replace the analysis tool where a real programme of tests is being run. The gain is concentrated on the question asked in passing, which is precisely the class of question that currently gets dropped. If your practice runs mostly structured, repeatable test programmes over these exports, you already have the right tool and this changes little.
Frequently asked questions
Which language do you ask the question in?
What files does the agent require?
How does it handle incomplete data?
How can an auditor verify the answer is correct?
How does the agent know what it can query about?
How long is the data kept?
Can I use my own AI engine with the agent?
How does the agent avoid high token spend and AI slop?
Is GDPdU still the correct name for this export?
Why do auditors receive a format designed for the tax authority?
If there is a GDPdU export in a folder somewhere and a question you never asked of it because the setup was not worth it, that is the case this was built for. Send the question and the shape of the export and it can be checked against a real file. hello@viter.io