# OurDigital Drive Folder Conventions

Canonical reference for naming and organization patterns enforced by
`our-gdrive-organizer`. The script's rules live in `code/organizer.py` —
keep this document and that code in sync.

For the **gotcha library** (canonical examples + edge cases consulted
during interactive content-based reorganization), see `patterns/`:
- `patterns/canonical-files.md`
- `patterns/canonical-folders.md`
- `patterns/categorization-rules.md`
- `patterns/gotchas.md`

The brand prefix rules (`D.intelligence …` → `OurDigital …`) now apply to
folder names too, at depth 2+. Top-level folders (e.g., `00_Brand Management/`)
are never auto-renamed.

## Folder naming

### 2nd-level Drive folders (top-level practice areas)

`NN_descriptive name`, where NN is a 2-digit numeric prefix indicating the
"sort bucket":

| Range | Meaning |
|-------|---------|
| 00–09 | Brand / core / cross-cutting |
| 10–19 | Product or specialty practice |
| 20–29 | Data / integrations |
| 90–99 | Archive |

Examples observed: `00_OurDigital`, `01_Brand in Action`, `02_SEO in Action`,
`10_OurSEO Agent`, `20_DataForSEO`, `99_Project Archive`.

### 3rd-level subfolders

`NN_descriptive name` again, scoped to the parent. Maturity ordering:

| Range | Meaning |
|-------|---------|
| 00–05 | Frameworks / always-on assets |
| 10–13 | Productized tooling / specialty modules |
| 20    | Data |
| 90+   | Archive within this practice |

### Client / project subfolders

Inside `01_Active Workspaces/` or `99_Project Archive/`:

`NN_{client name}` — e.g., `00_Jamie Clinic`, `04_오현이혼상속센터`,
`05_1가다`. NN is assigned in chronological / engagement order.

### Reserved / system subfolders

- `screenshots/` — auto-created by the organizer when moving stray screenshot
  files out of a parent folder root.
- `_unsorted/` — auto-created by the organizer for incomplete downloads
  (`.crdownload`, `.tmp`, `.partial`).

## File naming

### Templates and quotes (in `05_Working Template/`)

`OurDigital-{Service}-OOO {date}.{ext}` or
`OurDigital-{Service}-OOOOOO {modifier}.{ext}`.

`OOO` and `OOOOOO` are the canonical placeholder strings for "client name
goes here" — chosen to be visually obvious and easy to grep for. Use
whichever makes more visual sense in the filename.

Examples:
- `OurDigital-SEO Coaching-OOO 견적-20240612.gsheet`
- `OurDigital-SEO Treatment-OOO 호텔 견적-20240903.gsheet`
- `OurDigital-OOO 호텔 SEO Basic 패키지-20250416.gsheet`
- `OurDigital-Data Access & Management Agreement - 2026.gsheet`

### Brand prefix — parent company / SEO child brand

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.

Rules (filesystem rename only — does not touch cell/body content):

- `D.intelligence Lab-` → `OurDigital-`
- `D.intelligence` (anywhere) → `OurDigital`
- `D intelligence` (no-dot variant) → `OurDigital`

The organizer applies these to both files and folders at depth 2+. Top-level
folders (`NN_…`) are never auto-renamed.

**Important**: The script doesn't enforce the SEO-context caveat. When you
point the organizer at the whole Drive Stream or a non-SEO folder, it will
rename ALL D.intelligence references — which is wrong outside SEO context.
Only run the organizer on SEO folders (`02_SEO in Action/`,
`00_OurDigital/04_SEO/`, etc.). For non-SEO D.intelligence assets, do not
rename — they belong to the parent company.

See `patterns/gotchas.md` "D.intelligence vs OurDigital" for full guidance.

### Archive client files

Files inside `99_Project Archive/{client}/` should KEEP their original
filenames including real client names. The script skips these folders for
rename/move operations.

### Date stamps

Use `YYYYMMDD` (no separator) when embedding a date in a filename:
`OurDigital-Data Access & Management Agreement - 2026.gsheet`
`OurDigital-SEO Coaching-OOO 견적-20240612.gsheet`

When a date range is needed: `YYYYMMDD-YYYYMMDD`.

### Extensions and stub files

Google Drive Apps formats appear as 180-byte JSON stubs on the local
filesystem with these extensions:

| Drive type | Extension |
|-----------|-----------|
| Docs       | `.gdoc`   |
| Sheets     | `.gsheet` |
| Slides     | `.gslides`|
| Forms      | `.gform`  |

Renaming the stub on the filesystem only changes the local filename — the
backing Google document, its Doc ID, sharing links, and revision history are
untouched. Safe to rename. Cell-level / body-level changes still require
opening the file in the corresponding Google app.

## What the organizer does NOT enforce

- Cell content inside `.gsheet`, body content inside `.gdoc`, slide content
  inside `.gslides`, or any binary file (`.pdf`, `.pptx`, `.xlsx`). Those need
  manual editing in the source app. Track them with a `TODO.md` if needed
  (see `02_SEO in Action/98_Training/TODO.md` for an example pattern).
- Folder maturity ordering — the NN prefix system is a convention, but the
  script doesn't reorder or renumber folders.
- Per-folder `README.md` content beyond the AUTO-STRUCTURE block — manual
  Topics / Notes sections are preserved.

## Sensitive folders (never auto-modified)

Internal regex list (`SENSITIVE_SUBFOLDER_PATTERNS` in `organizer.py`):

- `^04_Case Studies$`
- `^99_Project Archive$`
- `.*Archive$` (case-insensitive)
- `^진단.*$`

These folders are still indexed (counts appear in the README structure),
but no files inside them are renamed or moved.
