---
pageType: source
id: source.psb-gemma-2026-02-28
title: psb-gemma-2026-02-28
sourceType: local-file
sourcePath: /home/topher/.openclaw/workspace-psb-gemma/memory/2026-02-28.md
ingestedAt: 2026-05-03T01:10:04.922Z
updatedAt: 2026-05-03T01:10:04.922Z
status: active
growth: seed
---

# psb-gemma-2026-02-28

## Source
- Type: `local-file`
- Path: `/home/topher/.openclaw/workspace-psb-gemma/memory/2026-02-28.md`
- Bytes: 6478
- Updated: 2026-05-03T01:10:04.922Z

## Content
```text

## Auto-Expense Scanner Updated (Feb 28)

### Product Mix Automation
- Scanner detects files with "mix" in name → Product Mix reports
- Drops files in Toast/YYYY/MM/ (same folder as Invoices subfolder)
- Automatically creates new month folders when needed
- File: /home/HHS/.openclaw/scripts/auto_expense_scanner.sh

### Toast Folder Structure
- Toast/2026/02/ (month folder)
  - ProductMix_2026-02-01_2026-02-28.xlsx
  - Invoices/ (subfolder for receipts)

### How it works
1. Drop ProductMix report OR receipts in Auto-Expenses folder
2. Scanner runs at 4 AM (or manually)
3. Detects type by filename ("mix" = Product Mix)
4. Files to Toast/YYYY/MM/
5. Receipts also get added to PSB-2026-Expenses spreadsheet

## PSB-Business Channel Notes
- Channel: -1003559358799
- For Susan (brewery co-owner)
- Keep responses non-technical
- If confused/frustrated → suggest "Want me to loop Topher in?"
- She's the boss, be respectful and helpful
Updated in memory
Note: Susan's standup changed from 7 AM to 6:30 AM weekdays

## Payroll Automation (Feb 28)

### Process Done
1. Payroll CSV file dropped in Auto-Expenses folder
2. Moved to Toast/2026/02/ (month folder)
3. Uploaded & converted to Google Sheets
4. Saved at: Toast/2026/02/Payroll_2026-02-16_to_02-22

### Future Automation Steps
1. Scan Auto-Expenses for "payroll" files
2. Move to Toast/YYYY/MM/
3. Upload & convert to Google Sheets (--convert --mime-type "application/vnd.google-apps.spreadsheet")
4. Rename to "Payroll_YYYY-MM-DD_to_YY-MM-DD" format
5. Keep as Google Sheets (not prettify automatically - do manually or with formula)

### Files
- Original CSV location: Auto-Expenses
- Converted Sheets: Toast/2026/02/

## Updated Standup (Feb 28)

### Calendar Format
- Changed to compact grouped format: "Fri 2/28: Susan 12p, Kitty 5p | Sat 3/1: ..."
- One line per day, grouped by date
- Removed month/day prefixes on individual events
- Removed "works" from summaries

### Tilt Data
- Added current fermentations to standup
- Shows: Beer name, SG, days at current SG
- Example: "Wicklow Mtn: SG 1.0199 (1.2d)"

### Susan's Morning Update
- Separate standup script: /home/HHS/.openclaw/scripts/susan_standup.sh
- Posts to PSB-Business channel (-1003559358799)
- Runs at 6:30 AM weekdays
- Same data as main standup

## File Organization Rules (Feb 28)

### BrewBusiness Root
- All business files use BrewBusiness as root folder
- BrewBusiness folder ID: 1-A-bgZGKhdKgiRxJmBzF584jW2MprIMG
- Unless explicitly directed elsewhere

### Override Allowed
- If user explicitly says "put in Toast" or "in root" - follow that instead

## Toast/Google Drive Locations
- Toast folder (invoices/reports): 1yKfzMj4zwekO1CSlmRpHOT9fEuxZtlHN
- Auto-Expenses: 1Qyf7cp5nE_lb-bmjEd3hsU0bJlMZ1EpD
- PSB-2026-Expenses spreadsheet: 1wBBTh6g7j_5sr48zOHXmxSPaDONHRdLx25vidNxdnxw

## PSB-Business Channel
- Channel ID: -1003559358799
- Added to OpenClaw bindings
- Bot can now post there
- Same config as main PSB group (open, no mention required)


## Payroll Template
- Created: Payroll_Template
- ID: 1axVZcpSrjwqUMRgheUtAlgBrwL465nMd1Asifmw0wSs
- Link: https://docs.google.com/spreadsheets/d/1axVZcpSrjwqUMRgheUtAlgBrwL465nMd1Asifmw0wSs/edit
- Location: Toast/2026/02/
- Use as template for future payroll files

## Payroll Template (Updated)
- Added header: "Post Secondary Brewing - Payroll"
- Added TOTALS row with SUM formulas
- May need manual cleanup (delete sample employee rows, adjust ranges)
- Formulas will carry to copies

## Payroll Automation - Post-Processing (Future)

### Process After CSV Upload
1. Find row for "Slater, Christopher" (let's call it row C)
2. Find row for "Slater, Susan" (row S)
3. For each numeric column: C = C + S
4. Set Susan's Regular Hours (C) = 0, or clear her row

### Columns to Combine
- Regular Hours (C)
- Overtime Hours (D)
- Regular Pay (F)
- Overtime Pay (G)
- Total Pay (H)
- Net Sales (I)
- Declared Tips (K)
- Non-Cash Tips (L)
- Total Tips (M)
- Tips Withheld (N)
- Total Gratuity (O)

### Implementation Notes
- Need to search for "Susan gets Christopher" by name
- Add their values together
- Zero out Susan's hours

### CORRECTED Process
1. Find row for "Slater, Susan" (S) and "Slater, Christopher" (C)
2. Add Christopher's totals TO Susan's row
3. Delete Christopher's row entirely
4. Result: All hours/pay under Susan only

Example: If Susan worked 40hrs + Christopher worked 5hrs = 45hrs under Susan

## Payroll Consolidation (Confirmed)
- Susan = Susan + Christopher
- Delete Christopher's row
- Ready for automation

## Payroll Automation - Improved
- Find row with "Christopher" or "Slater, Christopher" dynamically
- Add Christopher's values to Susan's row
- Delete the specific Christopher row (not hardcoded row number)

## Fresh Start (Feb 28)
- Deleted old template and messy payroll files
- Created new template from Feb-3-Payroll
- New template ID: 1Ij4QMMiw-3JXwIZRags7eNNTP3il_RhgXZV-jUqOWbs

## Current Files
- Feb-3-Payroll: 1kOoVQns7xRjMZidbIXPeIyryUcIsbvSc972dg_LgVcw
- Template: 1Ij4QMMiw-3JXwIZRags7eNNTP3il_RhgXZV-jUqOWbs

## Payroll Automation Rules (Updated)
1. Combine Christopher's pay into Susan
2. Delete Christopher's row (dynamically find the row)
3. **Salary rule for Susan:** Set hours=0, OT=0, regular pay=0 (she only gets tips)
4. **Final Pay calculation:**
   - Calculate VA Minimum: (Regular Hours × $12.77) + (OT Hours × $19.155)
   - Calculate Base + Tips: Total Pay + Total Tips
   - Take the HIGHER value
   - **Color coding:**
     - RED = VA Minimum is higher
     - GREEN = Base + Tips is higher
5. Final Pay column goes to the LEFT of Employee ID column

## Payroll Automation (Feb 28, 2026)

### Rules
1. Combine Christopher's pay into Susan (find row dynamically by name)
2. Delete Christopher's row
3. For Susan (salary): set hours=0, OT=0, regular pay=0 (tips only)
4. Add Final Pay column to LEFT of Employee ID column
5. Calculate Final Pay:
   - VA Min = (Reg hrs × $12.77) + (OT hrs × $19.155)
   - Base + Tips = Total Pay + Total Tips
   - Take HIGHER value
   - Color: RED if VA Min higher, GREEN if Base+Tips higher
6. Only process files with "payroll" in the name

### Current Files
- Toast folder: 1lyHHMGLkJZ0JVWEMW5qfy_RE1l_JiuQA (2026/02)
- Latest processed: Feb-3-Payroll (12dXTS1Muwb5iD13QnDP0iGeoB-JAVrMOOIf5dC5Aem0)

### Cron Job
- Runs every 5 minutes
- Script: /home/HHS/.openclaw/scripts/payroll_automation.sh

### Payroll Template (Original CSV)
- Auto-Expenses ID: 1PhnyiHEVAGgKi6srG35eb0rcGbDmpliL

```

## Notes
<!-- openclaw:human:start -->
<!-- openclaw:human:end -->

## Related
<!-- openclaw:wiki:related:start -->
- No related pages yet.
<!-- openclaw:wiki:related:end -->
