Management · the repetitive done, the close by itself
The dull work, gone. The close, automatic.
The repeated jobs automated and watched, and at month or quarter end the accounting export comes out by itself — a clean sheet your accountant can open, with nothing invented.
The whole back office, as four jobs that never stop — not a tool you have to drive yourself.
The repeated steps — the ones a person used to click through by hand — automated and watched. They run on schedule, and the run is seen end to end.
Month or quarter end, one clean export for your accountant — automatic, built from what is already recorded, nothing invented.
Your tools talking to each other, kept in sync. What changes in one place is reflected in the others — no one copying numbers by hand between them.
What sold, what's running, in the format you ask for. The numbers you need, handed over the way you read them — not the way a tool happens to export them.
The difference is not a flashy dashboard. It is the watch — and nothing acts on your books on its own.
How the books are held — not invented growth figures.
The automation is not the show; it is one more managed layer under the same watch.
Here is the real shape of it.
The code stays in English — the universal language of engineering.
# one workflow definition — the repeated steps, declared once and watched every run name: "invoice-to-ledger" trigger: "new_invoice" steps: - read: "invoice.pdf" - extract: ["date", "vendor", "amount", "tax"] - post: "ledger.entries" - notify: "book-keeper" on_error: "flag_human" # never guess, never push through — raise a hand instead schedule: "on_arrival" # run log — every pass is seen, not assumed run_id: "wf_2026_11_04_0137" status: "ok" exceptions: 0
"""MatchTop · the close — sales and costs out, a sheet your accountant can open. No one sits to compile it; it is a read of what is already recorded, nothing invented.""" import csv def close(period, sales) -> str: """Month or quarter: one clean export, in your currency, nothing invented.""" path = f"close-{period}.csv" with open(path, "w", newline="") as f: w = csv.writer(f) w.writerow(["date", "order", "item", "qty", "net", "tax", "gross"]) for s in sales: w.writerow([s.date, s.order, s.item, s.qty, s.net, s.tax, s.gross]) return path # handed to the accountant, not to a black box
"""MatchTop · reconciliation — two sources compared, mismatches flagged. It never silently fixes money. A difference waits for a person.""" from dataclasses import dataclass @dataclass class Mismatch: key: str left: float right: float def reconcile(bank, ledger) -> list: """Compare two sources by key; return what does not agree, for a human to decide.""" out = [] for key, left in bank.items(): right = ledger.get(key) if right is None or round(left, 2) != round(right, 2): out.append(Mismatch(key, left, right)) # flagged, not fixed return out # a human reads this list and decides
Why run automation beats a spreadsheet you must drive yourself.
A script that runs unwatched cannot be trusted with your books — it fixes quietly or fails quietly, and you find out later. A tool cannot hand you your own format; it hands you its own. That is why there is no price list here: we look at what must run and close, we measure it, and we quote what we measured.
Before a line is written, how your books and your data are kept. This part is not negotiable.
An NDA is the default here, not an upsell. What you share is read by one engineer and no one else — nothing is sold, shared, or passed on.
Your books, your records and your keys stay in your house; we keep no copy we do not need.
Every run and every flagged exception is logged and signed — you can read who did what, and when. No black box moving your money while you look away.
Two lines — what gets repeated by hand today, and what you want off your hands. We read them ourselves and we answer ourselves.
It is already on a screen in Zürich — not in a queue, not in a ticket. The engineer who would run this reads it, and writes back himself.
·