- Category-first: when someone asks "where's the bank statement?" they think of the kind of thing before the year. Putting category at the top keeps that mental model.
- Year subfolders inside year-scoped categories so each school year is a clean unit to archive once it ends.
- One canonical year format (
2025-2026) replaces today's mix of2024 - 2025,2024-2025,2024/2025,SY.... - Public Access folder stays in place — anyone who has its link today keeps working access.
- Nothing trashed in this pass. Duplicates are quarantined for human review.
Side-by-side. The total folder count actually grows once we add consistent year subfolders, but the top level drops from 17 to 15 and everything becomes predictable.
| Today (17) | Proposed (15) |
|---|---|
| 2024 - 2025 After Action Reports | Bank |
| 2024 - 2025 Donations | Budget |
| 2024 - 2025 Meeting Minutes | Cash Collection |
| 2024 - 2025 Scanned Docs | Communications |
| 2025 - 2026 After Action Reports | Contracts |
| 2025 - 2026 Donations | Donations |
| 2025 - 2026 Grade Level Grants | Events |
| 2025 - 2026 Meeting Minutes | Governance |
| 2025 - 2026 Slides (PowerPoint) | Grade Level Grants |
| 2025-2026 Scanned Docs | Meetings |
| Event Fliers | Membership |
| Family Fun | Public Access |
| Glow Party 2026 | Reimbursements |
| PTK PTO - Public Access Folder | Tax Forms |
| Resources-Other-School-GLG Grade Level Grants | _Review (transient — delete once triaged) |
| Saved from Chrome | |
| Standing Rules |
Same content, organized by what it is instead of by what year it's from. Year subfolders live one level down inside the categories that need them.
_Review/ ← transient — delete once triaged
Duplicates/ ← all quarantined dupes; filename prefixed with origin folder
Unclassified/ ← stuff we couldn't auto-categorize (board decides)
Saved-from-Chrome/ ← moved as a block, file-by-file decision
Bank/<year>/ ← monthly statements + transaction exports
Budget/<year>/ ← budget proposals, financial activity sheets
Cash Collection/<year>/ ← deposit slips, cash collection records
Communications/ ← evergreen — parent-facing flyers, forms, QR codes
Contracts/<year>/ ← year = period the contract covers (vendor agreements)
Donations/
<year>/ ← donor records per year
Templates/ ← donation letter, donation receipt
Events/<year>/<event>/ ← planning + flier + after-action report all live with the event
Governance/ ← bylaws, standing rules, board roster, position docs, important contacts
Archive/ ← superseded versions
Grade Level Grants/
<year>/ ← submitted grants per year
Application Template/ ← evergreen application form + resources
Meetings/<year>/ ← flat per year; date-coded filenames sort the meetings
Templates/ ← blank sign-in sheets, etc.
Archive/ ← older meeting docs the board archived themselves
Membership/
<year>/ ← rosters per year
Form Template/ ← the live membership form
Public Access/ ← preserved folder ID; curated subset for public eyes
Reimbursements/
<year>/ ← submitted requests per year
Form Template/ ← blank reimbursement form
Tax Forms/<year>/ ← annual filings
_Review/ uses a leading underscore so it sorts to the top during the cleanup window. Delete it once the board has triaged its contents.
Universal rules — apply everywhere:
- ISO dates: always
YYYY-MM-DD. NoM.D.YY, noMM/DD/YY. - No
/in filenames. Drive treats/in a name as a path separator in some contexts and it breaks tooling. - Hyphens for human-readable separators; preserve original extensions.
| Category | Pattern | Example |
|---|---|---|
| Meetings | TPK-YYYY-MM-DD-{Agenda|Minutes|Slides|SignIn}.{ext} |
TPK-2025-02-13-Minutes.pdf |
| Reimbursements | Reimbursement YYYY-MM-DD - $AMOUNT - <desc>.pdf |
Reimbursement 2025-10-30 - $109.95 - Lego Night.pdf |
| Bank statements | Bank Statement YYYY-MM.pdf (statement month) |
Bank Statement 2025-12.pdf |
| Bank transactions | keep generator name; just move to right year folder | FREEBUS_1332_Transactions_2026-03-02_2026-03-19 |
| Budget | YYYY-YYYY Budget - <variant>.{ext} |
2025-2026 Budget - Proposed.gsheet |
| Donations | Donation YYYY-MM-DD - <donor>.pdf |
|
| Contracts | <Vendor> Contract YYYY-YYYY.pdf |
MCT Contract 2025-2026.pdf |
| Grade Level Grants | <Grade> Grant YYYY-YYYY.pdf |
Kindergarten Grant 2025-2026.pdf |
| Events | folder-named; files inside free-form (ASCII-clean) | Events/2025-2026/Trunk or Treat/flyer.pdf |
| Governance | descriptive, evergreen | Standing Rules.pdf, Board 2025-2026.gdoc |
| Membership rosters | Membership Roster YYYY-YYYY.gsheet |
Same event, multiple folder names in the existing drive. These all collapse to:
| Found as | Canonical |
|---|---|
BINGO, Bingo Night, bingo night 2025 |
Bingo Night |
Glow Party, Glo Party, glow-flier, GlowParty-flyer |
Glow Party |
LEGO, Lego, lego night 2025 |
Lego Night |
Trunk or Treat, trunk or treat-no food |
Trunk or Treat |
Multi Cultural Night, multicultural |
Multi Cultural Night |
Staff Appreciation, staff appreciation |
Staff Appreciation |
Kindergarten Kickoff, kindergarten kickoff info flier |
Kindergarten Kickoff |
Auction, Auction Donation Letter |
Auction |
| Existing folder(s) | New home |
|---|---|
2024 - 2025 Meeting Minutes, 2025 - 2026 Meeting Minutes |
Meetings/<year>/ |
2025 - 2026 Slides (PowerPoint) |
Meetings/2025-2026/ (renamed to TPK-*-Slides.*) |
2024 - 2025 Scanned Docs, 2025-2026 Scanned Docs |
wrapper disappears; subfolders go to Bank/, Reimbursements/, Cash Collection/, Contracts/, Tax Forms/, Grade Level Grants/ under their year |
Family Fun/2024/2025/<event>/, Family Fun/2025/2026/<event>/ |
Events/<year>/<canonical event>/ |
Glow Party 2026, Event Fliers |
Events/<year>/<event>/ |
2024 - 2025 After Action Reports, 2025 - 2026 After Action Reports |
Events/<year>/<event>/AAR.<ext> (one AAR per event) |
2024 - 2025 Donations, 2025 - 2026 Donations |
Donations/<year>/ |
2025 - 2026 Grade Level Grants, Resources-Other-School-GLG Grade Level Grants |
Grade Level Grants/<year>/ and Grade Level Grants/Application Template/ |
Standing Rules/ (and Archive/ inside) |
Governance/ (and Governance/Archive/) |
Saved from Chrome/ |
_Review/Saved-from-Chrome/ (block move) |
PTK PTO - Public Access Folder |
renamed in place to Public Access (folder ID preserved so existing share links still work) |
| 45 loose files at root | distributed by filename pattern — see reorg-plan.csv |
Files moved to _Review/Duplicates/ with their original folder encoded in the filename like [Saved from Chrome] Congratulations!.png. Nothing is trashed. Board reviews and approves trash separately.
Quarantine rules applied:
- Same name in same folder → keep most-recently-modified; quarantine the rest.
- Root copy duplicating a subfolder copy → quarantine the root copy.
.docxnext to canonical.pdf(or Google Doc) in same folder → quarantine the.docx(download artifact).- Numbered variants (
-2,(1)) next to the un-numbered original → quarantine the variant. Copy of …files at root → quarantine.
12 files currently qualify. See reorg-plan.csv filtered to action = QUARANTINE for the full list.
Listed in reorg-plan.csv filtered to action = MANUAL_REVIEW. The board should decide where these go (or trash them):
- 2 screenshots from
2026-02-26 Bubble prices,camp shirt older kids.png,2025-12-attendance(root-level miscellaneous)Family Fun/PTO Logo.tif(probably an asset for Communications)- 3 items in
Event Fliers/that don't name a recognizable event (Cookie meeting,family recess.png,family recess b&w.pdf)
From reorg_planner.py against the current inventory:
| Action | Count |
|---|---|
| MOVE+RENAME | 113 |
| MOVE | 111 |
| QUARANTINE | 12 |
| MANUAL_REVIEW | 10 |
| NOOP (Public Access kept in place) | 3 |
| Total | 249 |
(Total is 249 files mapped; 251 in inventory but 2 of those land via combined quarantine paths.)
Top-level distribution after reorg:
| Top-level | Files |
|---|---|
| Meetings | 70 |
| Events | 47 |
| Reimbursements | 37 |
| _Review | 22 |
| Bank | 21 |
| Governance | 14 |
| Communications | 8 |
| Grade Level Grants | 8 |
| Donations | 7 |
| Budget | 6 |
| Contracts | 3 |
| Public Access | 3 |
| Cash Collection | 2 |
| Membership | 2 |
| Tax Forms | 1 |
- Board reviews this spec +
reorg-plan.csv. - Design an execution script (
gws drive files updatewithaddParents/removeParentsfor moves;renamefor filename changes). - Snapshot rollback plan — capture every
(id, parent, name)triple before mutating so we can revert. - Execute in a single transactional pass with rate limiting.
- Triage
_Review/contents with the board. - Curate
Public Access/contents by hand.