NAI OS

/nai-tax-theo — the German tax close

A closed quarter, checked and ready to file.

The most demanding of the three, and the one where being wrong costs money. It pulls a closed quarter from the bank, computes shareholder-loan interest, builds the UStVA worksheet against real ELSTER field numbers, and assembles a pack your accountant can check — Lohnsteuer for the quarter comes from three already-collected monthly runs, not from this command directly.

%%{init: {'theme':'neutral', 'flowchart':{'htmlLabels':false,'nodeSpacing':45,'rankSpacing':55}}}%%
flowchart TD
    H["Human types /nai-tax-theo"] --> C

    subgraph L1 ["1 - Orchestrator (.claude/commands)"]
        C["/nai-tax-theo<br/>resolves the quarter, dispatches in<br/>waves, synthesizes the pack"]
    end

    C -->|"Wave 1: parallel"| A1
    C -->|"Wave 1"| A2
    C -->|"Wave 2: after Wave 1"| A3

    subgraph L2 ["2 - Subagents (each in its own context)"]
        A1["qonto-collector"]
        A2["loan-interest-vga"]
        A3["vat-worksheet"]
    end

    A1 -.->|"working/*.json on disk"| A3

    PR["06 Tax Agent/payroll/<3 months>/<br/>payroll.json<br/>already produced by<br/>/nai-payroll-theodora"] -.->|"read directly,<br/>not dispatched"| C

    A1 --> T1
    A2 --> T1
    A1 --> T2
    A3 --> T2

    subgraph L3 ["3 - Tools (the only route out)"]
        T1["Qonto MCP<br/>list / get only"]
        T2["Read / Write / Bash<br/>local files"]
    end

    C ==> OUT["tax-pack.md<br/>human files and pays"]

    classDef orch fill:#dcefe9,stroke:#0f6f63,stroke-width:2px
    classDef tool fill:#f4f1ea,stroke:#8a7a5a
    classDef human fill:#fdf3e0,stroke:#8a5a00,stroke-width:2px
    class C orch
    class T1,T2,PR tool
    class H,OUT human
Two waves, two Wave-1 subagents — payroll dropped out to its own standalone monthly command. vat-worksheet waits because it consumes what qonto-collector wrote. Synthesis also reads three months of already-produced payroll.json directly, without dispatching anything for it. Each subagent returns one line — the bulk stays on disk.

This is where waves earn their keep. Both Wave-1 subagents are independent, so they run together. vat-worksheet cannot start until qonto-collector has written working/*.json, so it waits. The handoff between them is a file, not a conversation — which is what lets each one stay in its own context. The quarter's Lohnsteuer figure is a file handoff too, just from a different command entirely: /nai-payroll-theodora writes it up to three months earlier, and this command only ever reads it.

Next/nai-payroll-theodora