black.tax
black.tax runs a stokvel's treasury. A rule-based treasurer in backend/agent/src/decide.ts directs pooled contributions at the member debt with the highest rate first, keeps a reserve floor, pauses a payout when a member's DebiCheck mandate or contribution lapses, and explains each decision in plain language; assess.ts grades loan requests from other stokvels into Tier A, B or C by fixed thresholds, with the human treasurer approving. Every figure traces to a Beancount double-entry ledger served by the Python service in backend/ledger/ and its file hash. Approved inter-stokvel loans settle in USDC on Arc through Circle's ERC-8183 job escrow: backend/agent/src/arc.ts drives the full createJob -> setBudget -> approve -> fund -> submit -> complete lifecycle via @circle-fin/developer-controlled-wallets, with the right wallet signing each step, deterministic idempotency keys derived from the business reference, step and run scope (idempotencyKey()), and the job ID read from the JobCreated event. A Spring Boot core (backend/core), the arc-setup.ts and arc-status.ts wallet scripts and a Next.js frontend complete the monorepo.
🇿🇦
1 (Solo) — Lehlohonolo Sehako
Agentic treasury for South African stokvels: DebiCheck collections, a Beancount ledger, and inter-stokvel loans escrowed in USDC on Arc (ERC-8183).