- D_intelligence (underscore) — typo, NOT a regex variant. Fix one-off
via mv; do not widen RENAME_RULES (false-positive risk on legit
underscore-separator filenames).
- Externally-generated filenames vs OurDigital convention. Default to
normalize {Client}_/Client_/client_ → CLIENT- inside Active Workspaces;
drop 14-digit timestamps to YYYYMMDD; preserve only when an external
system requires the literal name.
- Reference library naming inconsistency — DO NOT bulk-normalize. Mixed
naming reflects source provenance (Slideshare slugs, vendor whitepapers,
Korean blog captures). Group by topic into subfolders instead
(frameworks/, examples/, ko/) when count exceeds ~15 at root.
Patterns library now at 15 gotchas. Validated by live application during
01_Brand in Action audit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
15 KiB
Gotchas
Edge cases the system has learned. When in doubt during interactive content-based reorganization, check here first.
Each gotcha follows the format: Pattern → Why it's tricky → Resolution.
Lesson notes for a specific lawyer/doctor/consultant
Pattern: Notes – [레슨] SEO 진단 & 관리 수업 - 양제민 변호사 6회차 (대면).gdoc
or similar lesson-format file referencing a real client by name.
Why tricky: Looks like training material (it IS a lesson note), but it's client-specific (양제민 variant of 오현이혼상속센터 engagement).
Resolution: Belongs in 99_Project Archive/{NN_그_클라이언트}/, NOT in
98_Training/. Training is for generic, reusable content. Client-specific
lesson notes are engagement records.
Quote sheet with D.intelligence Lab- prefix and a client name
Pattern: D.intelligence Lab-SEO Coaching-오현법률사무소-20240612.gsheet
Why tricky: Has both a brand-rebrand candidate (D.intelligence Lab- →
OurDigital-) AND a real client name that should become OOO. But cell
content can't be normalized by filesystem rename.
Resolution:
- Filesystem rename:
OurDigital-SEO Coaching-OOO 견적-20240612.gsheet - Add to a
TODO.mdreminding the user to open the sheet in Google Sheets and replace오현법률사무소and contact info inside cells withOOO/ placeholder text. - Move to
05_Working Template/once both filesystem AND cell content are neutralized. Until then, leaving the file in place with the rename done is a valid intermediate state.
Files at the root that look like they should be in a subfolder
Pattern: A top-level subfolder root contains 30+ loose files plus 0
subfolders. E.g., a screenshots collection directly at the top of
98_Training/.
Why tricky: The script's MOVE_RULES only catches very specific
patterns (Screenshot YYYY-MM-DD…). Manual moves often need judgment —
which subfolder should be created, what should be its name?
Resolution: Interactive content-based mode. Claude reads filenames in
batches, proposes a subfolder name (matching local language convention —
Korean if rest of folder is Korean), confirms with user, then moves with
mv. Update the parent README afterward via our-gdrive-organize --scope index.
Korean vs English filename mixing inside one subfolder
Pattern: 02_SEO Audit Toolkit/ contains both English files
(OurDigital-on-Pages Elements Kit-20250529.gsheet) and Korean subfolders
(참고 자료/, 문서 양식/).
Why tricky: Looks inconsistent at first glance, but is intentional — files use English when they're "OurDigital products" and Korean when they're "Korean-language reference materials."
Resolution: Don't normalize. Language tracks function:
- OurDigital-authored asset → English filename, OurDigital prefix
- External / Korean reference → Korean filename
- Subfolder for grouping Korean references → Korean folder name
Empty subfolders
Pattern: 99_Project Archive/03_소노펠리체CC Local SEO/09_수급 정보/
contains 0 files.
Why tricky: Tempting to delete to "clean up." But empty subfolders often represent reserved engagement phases that the project just didn't reach, or pending document deliveries.
Resolution: Leave empty subfolders alone unless the user explicitly says to clean them up. They don't break anything.
Numbered duplicates: (1), (2) suffixes
Pattern: D.intelligence Lab-SEO Coaching-오현법률사무소-20240612 (1).gsheet
exists alongside the same name without the (1).
Why tricky: Looks like a Drive sync duplicate, but cmp shows different
bytes — they're DIFFERENT Drive documents that happen to have the same name.
Resolution: cmp the two .gsheet stubs. If different (which they
usually are for (N)-suffixed files), preserve both with a suffix like
(v1), (v2), or (legacy). Never overwrite blindly. If actually
identical bytes, ask user which to keep.
_unsorted/ accumulates over time
Pattern: After several --scope move --apply runs, _unsorted/
accumulates .crdownload / .tmp files that the user never went back to.
Why tricky: These are usually legitimate trash but occasionally a real in-progress download.
Resolution: Don't auto-delete. Periodically prompt the user: "Your
_unsorted/ has N files older than 30 days. Want to review?"
A folder that mixes archive + active work
Pattern: A subfolder under 01_Active Workspaces/ contains both
ongoing work AND files from a finished engagement that should have been
archived.
Why tricky: Hard to tell from filenames alone. Need to check mtimes and content (last-modified-recently → active; older + closure-marker docs → should be archived).
Resolution: Interactive mode. Claude reads file mtimes + samples
content, proposes splitting into a new 99_Project Archive/{NN_client}/
entry. User confirms before moving.
D.intelligence vs OurDigital — parent company / child brand
Pattern: Files or folders named D.intelligence …, D intelligence …,
or with the legacy D.intelligence Lab- prefix.
Why tricky: D.intelligence is the parent company; OurDigital is its SEO-specialty child brand. The rebrand-to-OurDigital rule only applies when the asset is SEO-related. Non-SEO D.intelligence assets (consulting, data, training in other practices) keep the D.intelligence name because they belong to the parent company, not to OurDigital.
Resolution:
- Inside an SEO context (
02_SEO in Action/,00_OurDigital/04_SEO/, or any folder whose name contains "SEO"): apply the standard renameD.intelligence … → OurDigital …. - Outside SEO context: do not rename. Flag for user review and document the asset's intended owning practice.
- The
RENAME_RULESincode/organizer.pycover three variants (D.intelligence Lab-,D.intelligence, and the no-dotD intelligencetypo). The rules don't enforce the SEO-context caveat — that's the caller's responsibility (point the script at an SEO folder, not the whole Drive Stream).
Brand-variant typos that escape the regex
Pattern: A filename uses an off-spec spelling of D.intelligence —
e.g., D intelligence SEO Audit & Treatment.pdf (no dot), or
OurDigitial-… (transposed letters), or Techincal SEO (transposed).
Why tricky: The standard D\.intelligence regex requires the literal
dot, so the no-dot variant slips through. Same for OurDigital typos —
they don't match the brand pattern at all and look like normal filenames.
Resolution:
- When you find one during a manual review, do the rename via
mvand immediately consider whether to add a regex variant toRENAME_RULES. - The current rules cover:
D.intelligence Lab-,D.intelligence, andD intelligence(no-dot, word-boundaries to avoid false positives). - Common typos that are NOT in regex (because they're one-off mistakes):
OurDigitial,Techincal. Catch withmvduring manual review.
Real client names in 예시 자료 모음/
Pattern: Files in 02_…/예시 자료 모음/ that still have real client
names in the filename — e.g., OurDigital-SEO Audit-1gada.com-20240703.xlsx,
OurDigital-Sono International-Preliminary SEO Audit-20240927.gdoc.
Why tricky: The folder's canonical role is "neutralized example
deliverables" — examples to show in pre-sales without exposing real client
data. A file with a real client name in this folder is a half-done
neutralization. The original engagement copy usually exists elsewhere
(99_Project Archive/{NN_client}/ or 04_Case Studies/).
Resolution:
- Filesystem rename to neutralize the FILENAME using
OOO-style placeholders:OurDigital-OOO 호텔 체인-Preliminary SEO Audit-…gdoc. - Add to a
TODO.mdreminding the user to also neutralize CELL CONTENT (real names, contact info, URLs, keyword examples) inside the source Sheet/Doc — filesystem rename doesn't touch cell content. - Don't delete the file even though the original exists elsewhere — the neutralized example serves a different purpose (sales / training) than the archived original (engagement record).
- If the original doesn't exist elsewhere, copy it to the right archive folder FIRST before neutralizing the example.
Near-duplicate templates across 문서 양식/ and 05_Working Template/
Pattern: Same template name in both
02_…/문서 양식/OurDigital-SEO Audit Template-{date1}.gsheet and
05_Working Template/OurDigital-SEO Audit Template-{date2}.gsheet with
different dates (and different Doc IDs).
Why tricky: Looks like the same template at v1 and v2 (good cleanup target — keep the newer, archive the older). But sometimes they're genuinely different templates that just happen to share a name.
Resolution:
cmpthe .gsheet stubs first. Always different (different Doc IDs) for files at different dates — that just confirms they're separate Drive Docs, not bytes-identical stubs.- The Doc IDs alone can't tell you whether the cell content is similar. Open both Sheets in Google Drive. Usually one is a direct refinement of the other (older = v1, newer = v2 with added rows/columns).
- If clearly v1 / v2 of same template: delete v1, OR move v1 to
05_Working Template/with(legacy v1)suffix. - If genuinely different (e.g., one is "quick check" and other is "comprehensive"): rename to disambiguate explicitly.
- Always defer to the user for the open-and-compare step. Add to
TODO.mdwith both Doc IDs + paths so the user knows what to compare.
Stray screenshot that turns out to be a process diagram
Pattern: A Screenshot_YYYY-MM-DD…png in a folder of templates that
the script's MOVE_RULES would normally route to a screenshots/ subdir.
Why tricky: The MOVE_RULES regex (^Screenshot \d{4}-\d{2}-\d{2}…)
treats anything with that prefix as junk to be tucked away. But sometimes
the screenshot is actually a captured workflow diagram, org chart, or
reference visualization that has real value AND a meaningful home elsewhere.
Resolution:
- Always view the screenshot before moving it (use
Readon the .png). - If it's a diagram / reference visualization: rename to a descriptive
filename and move to the most relevant subfolder (often
참고 자료/for audit-toolkit context,docs/for code-related). - If it's an actual junk screenshot (UI snapshot during work): apply the
default rule and move to
screenshots/. - The MOVE_RULES regex pattern uses the macOS default
Screenshot YYYY-MM-DD at HH.MM.SS AM/PM.png(with spaces). The underscore variantScreenshot_YYYY-MM-DD_at_*does NOT match — catch those manually during content review.
D_intelligence (underscore) — typo, NOT a regex variant
Pattern: A file uses D_intelligence with an underscore separator
between D and intelligence instead of a dot. E.g.,
D_intelligence_홍아현_프로젝트부속계약서_20260501.gdoc.
Why tricky: It LOOKS like a third regex-escaping variant of the brand
prefix (alongside D.intelligence with dot and D intelligence with
space, both of which ARE valid spellings the parent company uses). But
underscore is wrong — D.intelligence is always written with a dot.
The underscore form is purely an accidental typo (probably auto-generated
by a system that sanitized dots to underscores).
Resolution:
- Treat as a one-off typo fix: rename
D_intelligence→D.intelligenceviamv. The rest of the filename keeps its underscores (those are legitimate field separators in the file's own naming scheme). - Do NOT add to
RENAME_RULES. Adding aD_intelligenceregex would cause false positives in any filename that uses underscores as field separators between something ending inDand something starting withintelligence— unlikely but defensively avoid widening the rules. - Same applies to other one-off accidental variants: fix with
mv, document the fix here, but don't widen the rules.
Externally-generated filenames vs OurDigital convention
Pattern: Files in an active client workspace whose names come from external systems and don't follow OurDigital convention. E.g.:
Jamie_Naver_Booking_Products_v1.0.gsheet(Title_Case_With_Underscores — looks like a Google Sheets name template)jam_medical_advertising_review_guide_20251119154552.gslides(lowercase + 14-digit timestamp — looks like an export from a publishing tool)jamie_monthly_sow_standard.docx(lowercase + underscores — looks like a Word template name)
Why tricky: These names are functional and the user might prefer to
preserve them as-is to maintain traceability with the originating system.
But they violate the canonical {ClientPrefix}-{topic}-{date}.{ext}
pattern from canonical-files.md, which makes the folder feel
inconsistent.
Resolution:
- The OurDigital convention wins inside
01_Active Workspaces/{NN_client}/because the user owns that folder's organization. Normalize:Jamie_→JAM-jamie_→JAM-jam_→JAM-_field separators →-(or space inside hyphenated phrases)- Long timestamps
YYYYMMDDhhmmss→YYYYMMDD(drop time portion) - Title_Case_Words → Title Case Words (use spaces inside hyphen-separated phrases)
- Default to normalizing unless the user says preserve. The originating system can usually re-export with a new name if needed.
- If the file is truly the system's source-of-truth filename (e.g., a webhook expects an exact filename match), keep it and note WHY in a README inside the same folder.
Reference library naming inconsistency (do NOT normalize)
Pattern: A reference folder like 90_Brand Management Reference/
contains 20+ image files imported as a batch from various sources, with
mixed naming conventions (Title_Case, lowercase-hyphens, Korean-spaces,
auto-generated junk).
Why tricky: It's tempting to normalize all the names for consistency. But the inconsistency reflects the varied sources of the references — each filename traces back to its origin (Slideshare slug, vendor whitepaper, screenshot of a textbook page, Korean blog).
Resolution:
- Do not bulk-rename reference filenames for cosmetic consistency. They have provenance value as-is.
- DO fix individual filenames that are functionally broken:
- Double extensions (
foo.png--example.png→foo-example.png) - Filesystem-illegal characters
- Truncated names that lost the meaning
- Double extensions (
- DO group by topic into subfolders if the count exceeds ~15 files at the
root:
frameworks/,examples/,ko/(or whatever fits the content). Subfolders provide structure without touching the legitimate filename diversity.
Adding new gotchas
When you (Claude) encounter a new ambiguous case during a content-based reorganization session, add an entry here BEFORE moving on. Format:
### Short pattern title
**Pattern**: filename / structure example.
**Why tricky**: what makes this hard.
**Resolution**: what to do.
---
This is how the system gets smarter over time. The patterns library is the institutional memory.