How It Was Built
The Daily Cyborg · Architecture & Origin · Est. April 2026
The whole thing started in a single Claude conversation in April 2026. The brief was simple: build a daily newsletter website. The domain existed. GitHub existed. The content direction was forming. What was needed was a home that could handle daily publishing without recoding anything each time, had a real archive, and — critically — looked like it meant it.
The specific aesthetic ask was a nod to the Daily Prophet from Harry Potter: a broadsheet newspaper feel, but not old or parchment-y. Organic and computery. Matrix. Wires. The response to that brief became a complete Claude Code prompt used to scaffold the entire site — directory structure, config files, theme, sample posts, and deployment instructions in a single paste.
“Like if a wizard’s newspaper was printed on a neural network. Organic meets computational. Roots and wires. Ink and electricity.”
The prompt specified colors, every font by name, a CSS circuit-board SVG background texture at 5–8% opacity, and newspaper-style double-rule dividers with a faint glow. Delivery format was explicit: every file with its full path, no abbreviations, nothing left for the developer to figure out.
That first conversation also produced the page structure (homepage, archive, about, marketplace, subscribe), the _data/ads.yml approach for the Marketplace’s rotating fake cyborg-upgrade ads, and the first twelve ad copy samples — deadpan corporate voice selling neural lace, ocular upgrades, arm replacement therapy, and memory expansion modules. The Marketplace was never meant to be functional. It was always flavor text that committed to the bit.
The Daily Cyborg is not a both-sides publication. It has a specific position: conscious, deliberate human agency in the face of technological change is the goal. The name, the tone, the aesthetic, and the automation are all in service of that stance. Every design decision — from the CRT aesthetic to the three-weight editorial structure — is downstream of that premise.
What we risk losing
What we might gain
The site runs on Jekyll, a static site generator, deployed via GitHub Pages at thedailycyborg.com. Every post is a markdown file in _posts/. Jekyll builds the HTML at deploy time — no server, no database, no CMS. The CNAME file ties the GitHub Pages deployment to the custom domain.
Posts use YAML front matter to carry metadata: layout, title, issue (a sequential integer shared across all editions), date, image, excerpt, and tags. The templates read these fields to render the masthead, issue label, themes line, and hero image — none of that content lives in the post body.
02. Task writes _posts/YYYY-MM-DD-slug.md to the repo
03. GitHub detects the push → Jekyll build triggers
04. Site live at thedailycyborg.com within ~60 seconds
05. No human action required
The visual language was not improvised in code — it was designed first, then handed off. A formal design handoff was produced (preserved in design_handoff_extracted/design_handoff_v1_muted_phosphor/) containing the full design system: palette, typography, CSS variable naming, spacing rules, and component layouts.
That handoff was imported into the Jekyll site. The design system has a name — v1 Muted Phosphor — and the reference files (shared.jsx, v1-muted-phosphor.jsx, v1-preview.html) served as the source of truth during implementation. The aesthetic is deliberately worn and low-fidelity: a técnicos-precise broadsheet printed on ancient hardware.
BG Primary
Phosphor
BG Noise
Amber Accent
Card BG
HEADLINES Courier Prime — monospaced, terminal-feeling
BODY Lora — readable serif for article prose
LABELS VT323 — retro bitmap for dates, issue numbers, section markers
MONO Share Tech Mono — secondary code and terminal context
Each post displays a unique hero image representing the edition’s themes. Claude doesn’t generate images natively, so a separate tool was needed — and rather than hand-prompting each image individually (unsustainable at volume), a dedicated Gemini-powered web app was built: The Daily Cyborg’s Digital Administrative Assistant.
The app runs as a local React/TypeScript app (Vite) against the Gemini API, scaffolded in Google AI Studio. The input is a CSV file of keywords — topics drawn from the publication’s themes — uploaded to a queue and processed in bulk.
The workflow is a two-step pipeline:
gemini-3-flash-preview) transforms a raw topic keyword into a fully-specified image prompt tuned to the Phosphor brand aesthetic. The system instruction is the brand guide verbatim. Output format: [CONCEPT_PROMPT]: ...gemini-2.5-flash-image) renders the optimized prompt at 1:1 aspect ratio and downloads it to disk, named with a topic slug and hex timestamp (e.g. cyborg_AI_governance_0xD5BA.png). The generation button is labeled “Synthesize Nano Banana” — an internal joke that stuck. A 3-second cooldown between requests prevents rate-limit errors on long batches.PALETTE #050F05 bg · #7EC87E phosphor · #3D6B3D noise · #C8913A amber accent
STRUCTURE Katakana clusters · binary fragments (01010110) · ASCII terminal symbols
LANGUAGE No readable English · symbolic and Katakana only
MOOD Quiet · contemplative · slightly melancholic · “human as data”
SPACE Minimalist · high negative space
There are currently 84 registered images in the pool, each tagged by topic and tracked in _data/images.json. A rotation algorithm checks the 10 most recently published posts and excludes those dates from the selection pool, preventing repeats in back-to-back editions.












The automation runs entirely through Claude’s scheduled task system — three separate tasks, each with a SKILL.md prompt file that Claude executes on a timer. No human intervention required on a normal publishing day.
_posts/ → updates used-stories.json and images.json. The Human Editorial is Jason’s section (verbatim from the Hopper if queued, or scaffolding bullets otherwise). The Robot Editorial is Claude’s — one confident, unhedged paragraph in the voice of the tech accelerationist._layouts/weekend.html. Checks four additional Hopper queues for pre-queued picks. Logs all movie/app/book selections to .weekend-picks.json to prevent repeats across future editions._scripts/compile_editorials.py to rebuild archives/editorials.md from scratch — scanning every post, extracting the Human Editorial section, stripping scaffolding lines, and writing results newest-first. A standalone record of Jason’s own voice across the publication’s entire run.The hopper is a pre-publish queue for content Jason wants to guarantee appears in a future edition. It’s backed by an Obsidian vault (_hopper/ with .obsidian/ config) so Jason can write and clip in Obsidian, then drop files into the appropriate folder. The scheduled task checks the hopper before searching the web and always prioritizes it.
After any hopper file is used, it moves to _hopper/archive/ with today’s date prepended. A hidden HTML comment at the bottom of every published post records what was used and which section it filled — invisible on the page, visible in the source.
The archive page (/archive/) doubles as a full-content search interface. Jekyll generates search.json at build time — a flat array containing every post’s title, URL, date, issue number, excerpt, full stripped content, and tags. The page fetches this on load and filters it client-side on every keystroke, matching against all four fields simultaneously. No server, no search API. Entirely static.
The override lives as a single block at the top of each SKILL.md prompt. Removing that block when Jason returns is the only change needed — nothing in the templates or downstream code is affected.
A standalone feature at /singularity-tracker/ pulls live probability data from Manifold Markets, Metaculus, and Kalshi on AGI arrival dates, alongside curated static entries from Kurzweil, Dario Amodei, and others. It uses manual fallback values for markets where live API access is blocked by CORS, cached for two hours in localStorage. Implemented in assets/js/singularity-tracker.js.
| Layer | What It Is |
|---|---|
| Content store | Jekyll _posts/ — one .md file per edition |
| Build & hosting | GitHub Pages, custom domain via CNAME |
| Design system | v1 Muted Phosphor, derived from a Claude design handoff |
| Hero images | 84 phosphor-style images generated in a custom Gemini app, rotated via _data/images.json |
| Automation | 3 Claude scheduled tasks (Mon–Thu daily, Friday weekend edition, Sunday archive rebuild) |
| Content queue | Obsidian-backed hopper at _hopper/ — 8 sub-queues |
| Deduplication | _data/used-stories.json (cumulative URL history) + .paywalled-publications.json |
| Site search | Client-side against search.json (Jekyll-generated at build time) |
| Editorial archive | archives/editorials.md, rebuilt weekly by Python script |
| Weekend log | _posts/.weekend-picks.json — prevents duplicate movie/app/book picks |
Not indexed · Not linked · Just for cyborgs who ask