Skip to content

Instantly share code, notes, and snippets.

@wormeyman
Last active May 22, 2026 04:35
Show Gist options
  • Select an option

  • Save wormeyman/c9bcea8640a7abf37c5c63fcc5de0631 to your computer and use it in GitHub Desktop.

Select an option

Save wormeyman/c9bcea8640a7abf37c5c63fcc5de0631 to your computer and use it in GitHub Desktop.

PTK PTO Drive — Target Taxonomy

Why this shape

  • 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 of 2024 - 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.

Top-level folders: today vs. proposed

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.

Top-level layout

_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.

Filename conventions

Universal rules — apply everywhere:

  • ISO dates: always YYYY-MM-DD. No M.D.YY, no MM/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.

Per-category patterns

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

Canonical event names

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

What folds into what

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

Duplicate handling (this pass: quarantine only)

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:

  1. Same name in same folder → keep most-recently-modified; quarantine the rest.
  2. Root copy duplicating a subfolder copy → quarantine the root copy.
  3. .docx next to canonical .pdf (or Google Doc) in same folder → quarantine the .docx (download artifact).
  4. Numbered variants (-2, (1)) next to the un-numbered original → quarantine the variant.
  5. Copy of … files at root → quarantine.

12 files currently qualify. See reorg-plan.csv filtered to action = QUARANTINE for the full list.

What needs human review (10 files)

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)

Move plan summary

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

Next steps (not part of this cycle)

  1. Board reviews this spec + reorg-plan.csv.
  2. Design an execution script (gws drive files update with addParents/removeParents for moves; rename for filename changes).
  3. Snapshot rollback plan — capture every (id, parent, name) triple before mutating so we can revert.
  4. Execute in a single transactional pass with rate limiting.
  5. Triage _Review/ contents with the board.
  6. Curate Public Access/ contents by hand.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment