NAI OS

/nai-payroll-theodora — the monthly Lohnsteuer collector

One payslip, extracted, independent of the quarter.

The smallest of the group. German Lohnsteuer-Anmeldung frequency is set independently of UStVA frequency, so when /nai-tax-theo moved to quarterly, payroll collection stayed monthly — run once right after each payslip drops, its output waiting on disk for the quarter to pick up.

%%{init: {'theme':'neutral', 'flowchart':{'htmlLabels':false,'nodeSpacing':45,'rankSpacing':55}}}%%
flowchart TD
    H["Human types /nai-payroll-theodora<br/>each month, after the payslip drops"] --> C

    subgraph L1 ["1 - Orchestrator (.claude/commands)"]
        C["/nai-payroll-theodora<br/>resolves the month, dispatches once,<br/>writes a short summary"]
    end

    C --> A1

    subgraph L2 ["2 - Subagent"]
        A1["payroll-lohnsteuer"]
    end

    A1 --> T2

    subgraph L3 ["3 - Tools (the only route out)"]
        T2["Read / Write / Glob<br/>local files only"]
    end

    C ==> OUT["payroll.json + payroll-summary.md<br/>read later by /nai-tax-theo"]

    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 T2 tool
    class H,OUT human
One subagent, one wave, no cockpit — this is a small monthly utility run, not a CFO-facing review package. /nai-tax-theo reads its output directly three months later; it never dispatches payroll-lohnsteuer itself.

No Qonto here at all — the only input is the dropped payslip export in 06 Tax Agent/inputs/payroll/. If it's missing, payroll-lohnsteuer flags it and stops rather than guessing a figure; the quarter later refuses to sum a partial quarter for the same reason.

Next/nai-newsletter