A simple patronage point system for networked cooperatives.
Patronage points (PP) are how cooperatives track and reward member contributions. This repo provides a lightweight Python prototype for running a PP ledger — designed to be hackable, transparent, and easy to audit.
Every contribution earns PP using a single formula:
PP = Hours × PP Rate/hr × Multiplier
The multiplier (default: 12) represents the cooperative's leverage factor — how much the cooperative amplifies member contributions relative to market rates. Flat awards are also supported for non-hourly work.
| Task / Role | PP Rate/hr | Multiplier |
|---|---|---|
| GTM Hour | 100 | 12 |
| Dev Hour | 50 | 12 |
| Medior Dev Hour | 60 | 12 |
| UX Hour | 100 | 12 |
| Interviewer | 100 | 12 |
| Interviewee | 50 | 12 |
| Facilitator | 75 | 12 |
| Stewardship | 40 | 12 |
| Learning | 10 | 12 |
| Legal Hour | 100 | 12 |
| Advisors | 150 | 12 |
Rates are defined in patronage.py and easy to extend.
git clone https://github.com/qbfrank/patronage.git
cd patronage
python play.py # interactive CLI
python play.py --demo # run a pre-loaded NAOG1-style demoNo dependencies beyond Python 3.10+.
| File | Purpose |
|---|---|
patronage.py |
Core library — Patron, Ledger, rate table |
play.py |
Interactive CLI + demo |
CLAUDE.md |
AI collaboration guidelines |
=== NAOG1 Demo Closing PP Ledger ===
Total PP Awarded: 836,448.00
# 1 Alex Lion Yes! 696,000.00 PP
# 2 Aza Mafi 86,544.00 PP
# 3 Ariana Bahrami 53,904.00 PP
- Transparent: Every PP award is traceable to hours, rate, and multiplier.
- Queryable: Awards flagged as queries (e.g. no multiplier, non-standard rate) are explicit.
- Extensible: Add new rate types, groups, or closing periods without breaking existing data.
- No database required: The prototype uses in-memory Python objects. Persist to JSON/CSV/spreadsheet as needed.
GPL-3.0 — see LICENSE.