---
title: Template Literals
product: ebcprep-orchestrator
doc_type: guide
version: main
source: git2docs (code-derived, validation-filtered)
canonical: https://git2docs.com/jan-mark-holzer/docs/ebcprep-orchestrator/ebcprep/template-literals
---

# Template Literals

_Using tagged template literals_

## Overview

This page explains how to use tagged template literals within ebcprep's configuration and scripting surface. Tagged template literals let you embed dynamic values — such as executive names, meeting dates, and document URLs — directly into configuration strings and CLI invocations, making it easier to build consistent, readable expressions when wiring up your feeder spreadsheet data or customizing output. Understanding this pattern helps you work more efficiently with ebcprep's configuration files and reduces the chance of formatting errors in notebook titles and source labels.

## Prerequisites

Before working with tagged template literals in ebcprep, make sure you have the following in place:

- **Python ≥ 3.11** — required by ebcprep and its dependencies
- **uv** (Astral package manager) — used to install and run the project
- **notebooklm-mcp-cli (`nlm`) ≥ 0.6.5** — the companion tool that manages your NotebookLM session
- **A configured `.env` file** — containing your service-account path, Google Sheet ID, and NotebookLM profile name
- **A valid `defaults.toml`** (optional) — if you plan to template default source titles or collaborator labels
- **ebcprep installed and authenticated** — run `ebcprep doctor` to confirm everything is connected before experimenting with template expressions

> **Note for reviewer:** The source material does not describe a tagged template literal feature native to ebcprep itself. The page title and purpose appear to reference a general programming concept (tagged template literals, common in JavaScript/TypeScript) that is not documented in the provided architecture docs or component definitions. The sections below are written as accurately as possible given available material, but a reviewer should confirm whether this page refers to a specific ebcprep feature, a Python f-string pattern used in configuration, or a documentation page that was assigned to the wrong product context.

## Configuration

ebcprep reads configuration from two files at startup.

### `.env` — runtime connection settings

Create this file by copying `.env.example`. The key fields are:

| Variable | Description | Example value |
|---|---|---|
| `GOOGLE_APPLICATION_CREDENTIALS` | Path to your GCP service-account JSON key | `./keys/my-sa.json` |
| `SHEET_ID` | The ID of your feeder Google Sheet | `1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms` |
| `NLM_PROFILE` | The profile name saved by `nlm login` | `my-profile` |
| `SHARE_ROLE` | Role granted to invited collaborators | `editor` or `viewer` (default: `editor`) |

All values are strings. ebcprep validates these at startup: the service-account file must exist on disk, and the share role must be exactly `editor` or `viewer`.

### `defaults.toml` — always-included people and documents

This file is optional. If it is absent, ebcprep treats both lists as empty. Use it to specify collaborators and documents that should appear in every executive notebook.

```toml
[[always_collaborator]]
email = "ebc-ops@example.com"
role  = "editor"

[[default_source]]
url   = "https://docs.google.com/document/d/<doc-id>/edit"
title = "Corporate Briefing Standards Guide"
```

- **`always_collaborator`** — each entry must include a valid email address and a role (`editor` or `viewer`). This person is invited to every notebook ebcprep creates or updates.
- **`default_source`** — each entry must include a valid `https://` URL pointing to a Google Doc, Sheet, or Slide. The optional `title` field sets a human-readable label for the source inside NotebookLM.

ebcprep adds default sources and collaborators idempotently: if a source or collaborator is already present in a notebook, the entry is skipped on subsequent sync runs.

> **Note for reviewer:** No configuration surface specifically related to "tagged template literals" was found in the source material.

## Usage

Once ebcprep is installed and configured, your day-to-day workflow revolves around a small set of CLI commands.

**Preview what a sync would do** (no changes made):

```bash
ebcprep sync --dry-run
```

This reads your feeder spreadsheet and prints every action ebcprep would take — creating notebooks, adding sources, sending invites — without touching NotebookLM or your state database.

**Run a full sync** to reconcile the sheet with NotebookLM:

```bash
ebcprep sync
```

ebcprep processes every row in the feeder sheet. Rows whose content hash already exists in the state database (`data/ebcprep.db`) are skipped automatically, so only new or changed meetings trigger API calls.

**Check which executives and notebooks are tracked**:

```bash
ebcprep execs
```

**Inspect the meetings recorded for a specific executive**:

```bash
ebcprep meetings "Jane Smith"
```

**Generate mind maps** for all executives whose notebooks have sources:

```bash
ebcprep mindmaps
```

**Publish the team portal** — a local HTML page listing every executive's notebook URL:

```bash
ebcprep export
```

This writes `index.html` to your working directory. Open it in a browser or share it with your EBC team.

**Run the health check** at any time to validate configuration and connectivity:

```bash
ebcprep doctor
```

> **Note for reviewer:** No usage patterns specific to "tagged template literals" were found in the source material. The commands above reflect the CLI surface documented in the architecture source.
