⚠️ CHECK YOUR SPAM / JUNK FOLDER.
Gmail, Outlook, and Yahoo often filter our sign-in email on the first send. If you don't see it in your inbox within a minute, look in spam and mark it "Not spam" so future ones land in the inbox.
Note: Google sign-in is for administrators only. Brotherhood members — use the email option below to request a sign-in link.
⚠️ CHECK YOUR SPAM / JUNK FOLDER.
After you submit, we'll email you a sign-in link. Gmail, Outlook, and Yahoo often filter the first email into spam. If you don't see it in your inbox within a minute, look in spam and mark it "Not spam."
Note: Google sign-up is for administrators only. Brotherhood members — use the email option below.
Hi — your account is registered. An admin will assign your role shortly. You'll have access as soon as they do.
Approve new sign-ups and assign roles. pending = no access. user = read-only. manager = can edit dues / recon. super_user = everything + can manage users.
Sign-ins and admin changes — newest first. Hover a row for details.
A whiteboard walkthrough of how sign-ins, edits, and audit trails flow through the system. Use this to onboard a new co-admin or to answer "what happens when…?" questions.
recon-allocatefishing-archive / -unarchiverecon-alias-create / -deleteuser-role-changeusers-notifycomm-sendcomm-template-create / -update / -deletetreasury-config-updatetrip-expense-create / -update / -delete / -toggle-reimbursedreceipt-extract · receipt-deletetrip-debits-import · trip-expense-match-debit · trip-expense-unmatch-debitpaid flag is no longer driven by the UI — Paid status is now derived from reconciled allocations ≥ $175.carryover_2025_close; future config goes here too.receipts/<year>/<uuid>.jpg. Read access via signed URLs (1 hour) through /api/receipt-view; only manager+ may upload.html, body { overflow-x: hidden; } + body { max-width: 100vw; } means even an unexpected wide element can't cause a full-page horizontal scrollpvme2013@gmail.com → row logged in brotherhood_communications with per-recipient delivery statusbrotherhood_comm_templates and can be edited from the Communications tab. Secrets: BROTHERHOOD_GMAIL_USER + BROTHERHOOD_GMAIL_APP_PASSWORD on the Edge Function (App Password must be exactly 16 chars)./api/signup-payments (drill-down) and /api/recon-discrepancies (audit). Both manager+ only.(transaction_date, description, amount, balance) so you can paste the same statement twice safely.sms: URLs — one tap per person, you press Send. SMS is not logged (we can't see Messages). Recipients with no phone are skipped.resolveRecipients dedupes by lowercase email. If two active signups share an address (real or fake), only one gets the message. Cross-check the Fishing tab against the Compose preview if numbers disagree — it usually means a duplicate email worth investigating.pvme2013@gmail.com with display name "Brotherhood Fishing Trip". Limit: Gmail SMTP allows ~500/day, plenty for ~50 members. First emails to new recipients can land in spam — same caveat as the magic-link sign-in flow.invited_count bumps, last_invited_at stamps with now.{first}, {name}, {trip_cost} all work. {paid} and {balance} come out as $0.00 for prospects — they haven't paid because they're not on the roster yet. Use the Invite — Come fish with us template, which doesn't reference money owed.balance column from brotherhood_bank_transactions) · Net Brotherhood = carryover + reconciled income − trip expenses.fishing_trip allocations · Expected = active signups × $175 · Outstanding = Expected − Collected · Trip expenses = sum of receipts logged for the current year.dues_annual + dues_monthly allocations · Other = anything reconciled to an unrecognized category.brotherhood_config via /api/treasury POST. Audit-logged as treasury-config-update./api/treasury rejects anything below super_user. Locked down 2026-06-30 so dues/carryover/bank-balance figures stay with the bookkeeper.bank_transaction_id on each receipt. Phase 2 will let you click an unreconciled debit on the Recon tab and pick which receipt it covers — same flow as the deposit-allocation UI today.trip_year. Change the year field at the top to view a prior year's receipts without losing them. Treasury tile reads the current year by default.super_user at the server. Locked down 2026-06-30.{ to force JSON output. Cost: ~$0.001 per receipt.brotherhood-receipts. Service-role only for write; viewing goes through /api/receipt-view which returns a 1-hour signed URL./api/receipt-delete which removes the image from Storage (path-validated to receipts/ prefix). Useful when you snap the wrong thing — no orphan images.ANTHROPIC_API_KEY lives in Cloudflare Pages env vars (Production). If it's missing or invalid, the upload still succeeds but auto-fill is skipped.brotherhood_trip_expenses.bank_transaction_idtransaction_type = Debit. EXCLUDE: Preauthorized Withdrawal to TRUIST BANK (internal savings transfer). Credits go through the Recon tab unchanged./api/recon now filters transaction_type=eq.Credit. Debits live in the same table but only surface on the Trip Expenses tab — clean separation per user's "keep trip stuff out of Recon" rule.bank_transaction_id = null — the debit goes back to the unmatched bucket; the receipt stays in the receipts list.webhook_log table to see when this triggers.For the brotherhood only.
Different passcode from the fishing trip.
Copy rows from your Excel sheet (with a header row) and paste below.
Columns should include Name and one column per month
(Mar, Apr, …, Feb).
Put any non-empty value (e.g., 1, x, $10) in a cell to mark that month as paid.
Reconciliation uses the same passcode as Dues.
Anything that doesn't add up — over-allocated, archived-but-paid, or legacy "paid" flags not backed by reconciliation. Click a row to drill into the person.
Paste your Truist export — either the raw CSV file contents OR copy the rows from Excel/Numbers (tab-separated). Headers are optional. Duplicates are skipped automatically, so you can paste a full statement every time.
Aliases auto-match bank names to members. Example: "JOYFUL REAL ESTATE LLC" → Rothstein Campbell.
Same passcode as the fishing trip.
Top-line snapshot of Brotherhood finances. Numbers live from the bank + reconciliation data; the carryover figure is editable below.
Stored in brotherhood_config under key carryover_2025_close. Defaults to $1,324.76 per your books. Bank-actual carryover was $1,284.35 (the $40.41 gap is acknowledged and intentionally not chased).
Log purchases for the fishing trip — food, fuel, gear, lodging, etc. Mark items as reimbursable if someone other than the Brotherhood account paid for them, then check them off when reimbursed.
Paste your bank CSV here. We'll import the debits (purchases) — internal transfers (Preauthorized Withdrawal to TRUIST) are filtered out. After import, exact-amount + same-week matches link automatically; ambiguous ones get a Match button.
Send reminders, deadlines, and updates to Brotherhood members. Emails come from pvme2013@gmail.com.
{first} still work.{first} and {balance} personalize correctly.{first} {name} {last} {email} {paid} {balance} {trip_cost}
{paid}/{balance} tokens are blank for them. After a successful send, their invited count bumps automatically and their status moves new → invited.