Work / Content & Brand
Envoy
The content-operations hub behind Brian's personal brand and Artorias Group LLC: a media library, ingest, thumbnail and research pipelines, per-platform strategy, and this website. DaVinci Resolve is the edit bay; Envoy is everything around it.
- Status
- Live · site in beta · first real thumbnail pending
- Stack
- PowerShell · yt-dlp · ffmpeg · ImageMagick · Python · static HTML/CSS/JS · Cloudflare Workers
- Started
- August 2026
- Source
- Private repo
What it is
Every piece of Brian's social content, across X, YouTube, Instagram, TikTok, Twitch and Kick, is meant to be planned, researched, prepared and cataloged in one place. DaVinci Resolve does the editing. Envoy is the rest: where reference media is downloaded and filed, where thumbnails are assembled, where trend research lands, and where account strategy is written down.
It was deliberately built as a workspace, not an app: folders, a committed catalog, command-line pipelines and docs, driven through Claude Code sessions. Heavy media never enters git; a small JSON entry per asset is the searchable index. A phone-friendly front door is designed for later, once the pipelines have proven their shape.
Its defining rule is the Raw-Photo Covenant: photos of Brian are never retouched, regenerated or passed through image generation. Generated art arrives only as separate layers that never contain him, and a script composites everything deterministically. The only things allowed to touch the photo are framing, a reviewable cutout mask and one whole-frame colour grade.
Envoy also owns the two places a stranger first meets Brian: this website, merged in from a standalone project and live in beta since 28 Sep 2026, and his GitHub profile.
What it does
- IngestPaste a link from any platform and yt-dlp downloads the video, audio or thumbnail, ffmpeg extracts the audio, and the metadata lands in an inbox with a draft catalog entry.
- FilingA session tags each asset by brand, platform, purpose and why it was saved, then moves it into the library at a path that stays stable for the edit bay.
- Thumbnail compositingA recipe file lists the layers; ImageMagick stacks them bottom-up, adds the text, and applies one colour grade to the whole canvas last.
- The Raw-Photo CovenantEnforced by the architecture: originals are only ever copied out, cutouts come from mask files, and image generation never sees Brian's photo.
- ResearchOn-demand scraping sweeps for viral content, trending audio and competitors, written up as dated reports, with manual link drops as the fallback.
- The websitebrianzodd.com: a static, no-build editorial site in light and dark, served as an assets-only Cloudflare Worker behind a strict content security policy.
Build log
Everything around the edit bay
The record of how Envoy was built, from the website's beginnings in June 2026 and Envoy's first commit in August to today, dated, oldest first.
- 28commits
- 56days from first commit, with work on 6 of them
- 3pipeline scripts
- 10dated decisions recorded
As of 4 Oct 2026, counted from the repository.
- Era I · 17 – 18 JunBefore Envoy: the site
- Era II · 9 – 12 AugA workspace, not an app
- Era III · 19 – 29 AugPublic surfaces and the floor
- Era IV · 28 Sep – 4 Octbrianzodd.com goes live
Era I · 17 – 18 Jun 2026
Before Envoy: the site
The personal website started as its own small project, two months before Envoy existed. Its two founding decisions were carried over when it merged in.
-
A personal site, hardened from the start
The site began as a standalone static project. The first pass set the rules it still follows: scroll-reveal animation that can never hide content, a full search and social-sharing head, and a share image generated by a script rather than drawn by hand. Crucible, still unreleased, got a waitlist and a "follow the build" link instead of anything that implied an app-store product.
-
Two concepts become one site with two modes
An editorial poster set the look: ivory paper, black ink, oxblood accents, heavy condensed serif headlines and small technical diagrams. Two competing design concepts were explored, then reframed as the light and dark modes of a single site behind a theme toggle. The portrait went frameless, and an "Identity Operating System" radial drawn in real SVG became the signature element.
Brian's call He reframed the two rival concepts as modes of one site rather than picking a winner.
Era II · 9 – 12 Aug 2026
A workspace, not an app
Envoy's shape was settled before any code: pipelines first, no server. The ingest and compositing machinery were built and proven on the first day, and three days later the website moved in.
-
Envoy begins as a workspace
The first commit set up the project's docs, a git-ignored media tree and a committed catalog. Version one was deliberately folders, a catalog, command-line pipelines and docs, not an app: the pipelines deliver value immediately without hosting or sign-in, and the right shape for a phone app only becomes clear once they have proven theirs. Media lives inside the project but outside git, so paths stay stable for the edit bay and the catalog can be searched from machines that don't hold the files.
Method The shape came out of a structured design session that resolved three open forks before any code was written.
-
The Raw-Photo Covenant becomes rule one
The project's highest rule went in on day one: raw photos of Brian are never modified, retouched, regenerated or passed through image generation. Generated art may only arrive as separate layers that contain no photo of him, every final is checked against its raw source, and gym content shows exactly the physique in the raw. The point is honesty: nothing published should read as AI-generated.
-
Ingest and filing, proven end to end
Ingest was chosen as the first pipeline because everything else feeds on it. A link goes in; yt-dlp and ffmpeg produce the video, audio, thumbnail and metadata in an inbox with a draft catalog entry. A separate filing script does the mechanical half of filing, while the judgment half (brand, purpose, why it was saved) stays with the session that calls it.
-
A deterministic compositing engine, and the cutout ruling
The thumbnail engine reads a recipe file and stacks its layers bottom-up with ImageMagick. Photos load read-only, and the colour grade is a lookup table applied to the finished canvas, so it is global by construction. Cutouts were allowed under the covenant, but only through a mask file kept in the project for review, never AI inpainting around the subject.
Brian's call Asked directly, he ruled that masking is composition, not retouching: every pixel of him stays identical inside the mask.
Method Proven on a demo project with a synthetic stand-in figure; tests never use a real photo.
-
An asset library and Codex's art scope, written down first
A production asset library was scoped: sound effects, music beds, stock imagery, overlays and thumbnail material Brian can find by hand in seconds, plus a one-command scaffold for each new video. It stayed scope only, with the open questions listed for a recommendations pass. Codex's role as the only source of generated art was recorded for both thumbnail layers and video graphics, under the covenant either way.
-
The website moves into Envoy
The standalone website project was absorbed whole: files, docs and working sessions. The site is the web face of the same brand Envoy's content feeds, and one project with one doc system beat two half-related repos. Its briefing became the website's working brief and its two decisions were imported into Envoy's ledger.
Brian's call Merge and retire the separate project; the old repository stays as the archive of record.
Method Every file was copied and checked bit for bit before the old folder was removed.
Era III · 19 – 29 Aug 2026
Public surfaces and the floor
One long day made the site and the GitHub profile into proof of work and turned the landing page into a business card. Ten days later Brian moved his whole edit operation into the repo, and the rules bent around it.
-
Proof of work: the Workshop section
The site gained a Workshop: one card per real project, each with a stack line, a short description and an honest status. The premise was that people should see the builds rather than read a list of skills. Missing screenshots got a hatched placeholder frame on purpose, because an empty frame reads as "not captured yet" and a stock image would have been a lie.
-
The GitHub profile, and never a dead link
The GitHub profile became the second public surface, written in the same words as the site. Every project repo is private and the site was not yet published, so nothing on either surface linked anywhere that would fail. Follower and star badges were parked too: a counter showing zero reads worse than no badge.
-
The landing page becomes a business card
The site is the QR code on Brian's business card, so the first person to see it may be a hiring manager. The struck-through manifesto masthead left the first screen and moved, intact, into the coaching section; the landing page became identity, positioning, proof and contact. Only the messaging changed: the editorial design stayed, because a site that reads as designed is itself a signal.
Brian's call Made mid-session; nothing was deleted, only rehomed.
-
A real QR, a working waitlist, an accessibility pass
A script-generated QR code replaced a fake placeholder grid and was checked by decoding it at full and rendered size. The Crucible waitlist was wired to Crucible's existing insert-only table, which needed no change, and testing it caught a bug that reported a rejected address as a network failure. A measured contrast pass fixed three failures, including card text that all but vanished on hover in dark mode.
Method The waitlist was tested against the real table and the test rows were removed afterwards.
-
Ship complete, not phased
With the contact email and social links still missing, the plan was to hold the launch until every input existed and go live in one pass. The placeholders were recorded as deliberate holding positions so a later session would not strip them or push a partial deploy. Nearly six weeks later this was reversed.
Brian's call Launch whole or not at all.
-
The production floor is hands-off
Brian moved his entire manual production operation into the repo: Resolve exports and templates, editing resources, production trees and all unedited camera and phone media. The new rule: the folder is his, Claude changes nothing inside it without a specific go, and docs and pipelines adapt to however he arranges it. The edit bay holds live paths into that tree, so an unrequested tidy would break his work mid-edit.
Brian's call His floor, his layout; the tooling follows it.
-
The vault moves to where the work happens
The same day, the floor's unedited-media folder was ruled the vault for every raw original, and a separate raw-photo folder retired without ever being filled. The planned asset library moved to the floor's editing-resources folder as well. That left Envoy's own media tree with two jobs only: ingest downloads and pipeline output.
Brian's call Two same-day rulings: where the originals live, and where the asset library grows.
Era IV · 28 Sep – 4 Oct 2026
brianzodd.com goes live
The launch hold was reversed, the site went live in beta on a new domain, and the same day it split into three pages. A week later every project got a page of its own.
-
Live in beta on a new domain
brianzodd.com, matching the BrianZodd handle, replaced the domain originally planned, and the business-card QR was regenerated for it. The site went live as a beta: anything not ready yet, like social handles and a contact inbox, renders as a non-clickable "coming soon" rather than a dead link, under a Beta mark in the header. A live site with honest gaps beat an unpublished one, because the card and the profile needed somewhere to point.
Brian's call Reversed his own "ship complete" hold from August.
-
Workers, not Pages, and one security baseline
The site deploys as an assets-only Cloudflare Worker rather than the Pages setup the docs had planned: it is Cloudflare's current path for static sites and mirrors usecrucible.app's proven setup. A short ignore list keeps prototypes, references and tools out of the deploy without a build step. One security baseline was applied across the account's domains, including HTTPS everywhere, HSTS, DNSSEC and strict anti-spoofing email records.
-
Card images, and per-project links
Seven project cards got images under one rule: nothing private goes public. Apps were shot on fresh or seeded data, and projects without a UI worth showing display a real artifact, like Envoy's own recipe and output, never a mock interface. The GitHub profile began linking each project to its own card, which made those card anchors public URLs.
-
One scroll becomes three pages
The site split into Home, Work and Coaching, plus terms, privacy and a 404 page. Home could stop carrying two audiences at once: it stays the professional landing, Work holds every project, and Coaching is a separate venture with booking marked "opens soon". Old single-page links forward to their new place, and the printed QR still points at Home, so cards already handed out were unaffected.
Brian's call He didn't want one long scroll; the pages were designed with him section by section and built the same day.
-
Crucible gets one home
The site's own Crucible waitlist form and build log were removed, and the Work page now sends people to usecrucible.app for both. Every app should have one home; two forms and two build logs were two things to keep in step. Dropping the form let the content security policy drop the database origin too.
-
Analytics the policy was quietly blocking
Cloudflare was injecting its Web Analytics script and the site's own security policy was silently blocking it. Because the analytics are cookieless and need no consent banner, the policy was opened to that one origin and the privacy page says so.
Brian's call Allow it.
-
Renamed projects keep their old links
Two projects were renamed and their cards moved to new anchors. The old anchors became aliases that a small head script rewrites before the page scrolls, and Home forwards the old single-page links too, so nothing already shared under the old names breaks.
-
Every project gets its own page
Each project on the Work page got a dedicated page like this one: an overview plus a full build log, dated from its first commit and written from that project's own decision records and history. The model was Crucible's build log on usecrucible.app.