ClubTreasury AI
AI-powered club treasury with Sui payouts
Created on 29th August 2026
•
ClubTreasury AI
AI-powered club treasury with Sui payouts
The problem ClubTreasury AI solves
University clubs manage event budgets, receipts, reimbursement claims, and approvals across spreadsheets and chat messages. Treasurers struggle to see remaining budgets, spot duplicate claims, and prove that approved payments were actually made.
ClubTreasury AI brings this into one auditable workflow:
- A treasurer connects a Sui Testnet wallet and creates a persisted club treasury workspace.
- Gemini turns natural-language budget instructions into editable categories. Deterministic rules verify the totals, and the treasurer confirms the budget before activating it through separate Create, Fund, and Allocate wallet-signed Sui transactions using native Circle Testnet USDC.
- Members join the active treasury with a short code and submit reimbursement claims with private receipt images. Gemini extracts receipt facts and suggests categories; deterministic TypeScript checks amounts, duplicates, required evidence, and remaining budgets.
- The human treasurer reviews the recommendation and approves or rejects the claim. AI cannot authorize or sign a payment.
- For an approved claim, the treasurer explicitly signs a Sui transaction. Move enforces treasury authorization, category limits, and custody sufficiency. The application marks the claim paid only after verifying finality and the exact payout event.
Why Sui: Our Move Treasury<Asset> holds funds on-chain, TreasurerCap<Asset> controls authorization, and typed PayoutEvent records provide public execution evidence. Receipts remain private and off-chain.
Why AI: Gemini handles unstructured budget language and receipt images. Validated outputs support human decisions while deterministic rules remain authoritative for money.
Track fit: Payments & Stablecoins — a working USDC treasury and reimbursement workflow with spending controls. AI × Sui — useful financial understanding connected to Sui custody and human-approved execution.
Working prototype: https://apumubasuiclubtreasuryai000.vercel.app
Sui Testnet Move package: 0xfbb2f939d484b6179f555a6cef8093faa749001184d84adb980de6d88c0e1d4f
Latest final demo transaction: A KFC reimbursement paid 0.10 Testnet USDC through the completed ClubTreasury AI workflow.
Transaction digest:
9S7gWEcZ4L2cKUt9n89KVsm5NTi4uoRoaSNUzxDiiKCm
Treasury object:
0x3948cd01863da1016839864e605f9147bd68e205625036504fab317cdb9adc32
AI tools declaration: ChatGPT and OpenAI Codex were used for planning, coding, debugging, documentation, and verification. Google Gemini Developer API powers the product's budget parsing and receipt analysis. This is a Testnet MVP; zkLogin, sponsored transactions, and multisignature approval are future work.
Challenges we ran into
The hardest challenge was keeping a human-approved reimbursement consistent across the database, wallet, and Sui when a network response was interrupted or ambiguous. An early live acceptance test exposed a duplicate-payment defect. We preserved that incident in the repository and fixed the payment lifecycle: immutable approved payout snapshots, one active payment attempt, transaction-digest persistence before broadcast, and reconciliation of the same digest instead of blindly creating a replacement payment. The successful deployed rehearsal produced one confirmed payout; refreshing preserved its Paid state without another signature or payment attempt.
We also had to prevent stale database balances from producing a misleading payment request. A server-side Supabase-to-Sui consistency check now blocks signing if the treasury states disagree, and paid/budget updates happen only after finality and exact PayoutEvent verification.
AI receipt interpretation can be incomplete or ambiguous. We validate Gemini's structured responses, use integer/base-unit arithmetic for authoritative financial checks, and fall back to human Review when evidence is invalid or conflicting. AI never owns balances or wallet keys.
Receipt privacy required a separate off-chain evidence path. We use private Supabase Storage, row-level access policies, wallet-bound identity, image validation, and receipt hashing for duplicate detection, while publishing only the necessary on-chain payment evidence.
Another integration hurdle was allocation reconciliation: database row ordering could differ from the on-chain category order. We fixed it by matching exact category-reference/amount pairs independently of row order.
The final repository state is deployed and verified. Latest main commit: 5cba11397901d1710cf2dbb4fc86c5223739c356
GitHub Actions CI run #253 passed lint, TypeScript type checks, 290 unit tests, production build, Chromium setup, and all 10 Playwright smoke/E2E tests. The deployed Move package also retains 31/31 passing Move tests, and Vercel successfully deployed the latest main commit.
These challenges shaped our final architecture:
Gemini AI → Deterministic Rules → Human Decision → Sui On-chain
Tracks Applied (2)
PAYMENTS & STABLECOINS
Sui Foundation
AI × SUI
Sui Foundation
Technologies used
