Every project in this portfolio follows the same rules, so anyone — a recruiter, a hiring manager, or future-me — can drop into any folder and know exactly where things are.
data/, ai-ml/, it-ops/, or experiments/, with a kebab-case name (data/energy-demand-forecast).src/, tests in tests/, raw data gitignored) is what the finished projects in this repo demonstrate. Copy an existing project folder as a starting point and rename it.pyproject.toml, a src/ package layout, and pytest..env (gitignored); the committed .env.example shows only the shape.data/raw/ is gitignored. Small, licence-clean samples may be committed under data/samples/ with provenance notes in the project README.pytest runs for every project on every push (see .github/workflows/ci.yml).data/my-project/
├── README.md # problem, approach, results, quick start
├── pyproject.toml # metadata + deps + pytest config
├── .env.example # environment shape only, never values
├── src/my_project/ # package code
├── tests/ # pytest suite
├── notebooks/ # exploration / analysis (data & ai-ml projects)
└── data/
├── raw/ # gitignored — generated or downloaded on setup
└── samples/ # optional: small committed samples for demos