# Dalton Cox > Product engineer and designer in Oklahoma City. One person, with agents, doing the whole job: product, design, engineering, infrastructure, support. 1,466 production deploys since Sep 1, 2026, read live from Vercel each hour. The site is a job board: five showroom products and two client case studies, each a ticket with media, facts and a punch list. Every ticket has a markdown twin; append .md to its URL, or send Accept: text/markdown. Email: dalton@galaxyco.ai. ## Jobs - [#0001 OneLine](https://daltoncox.com/jobs/oneline.md): What does my agent actually know about me? Active, 153 deploys since Oct 13. - [#0002 GalaxyCo.ai](https://daltoncox.com/jobs/galaxyco.md): How does every site on the studio get the same motion without writing it twice? Active, 77 deploys since Sep 14. - [#0003 Delta](https://daltoncox.com/jobs/delta.md): How do I run an agency from one screen with an agent beside me? Active, 320 deploys since Sep 25. - [#0004 AthleteEra](https://daltoncox.com/jobs/athleteera.md): What's a college athlete's card worth tonight? Active. - [#0005 BadBeats](https://daltoncox.com/jobs/badbeats.md): Can a player verify the game wasn't rigged? Active. - [#0006 QuickClaims](https://daltoncox.com/jobs/quickclaims.md): A four-layer parser that reads carrier PDFs into structured line items at 99%, and an email engine that files correspondence to the right claim. Case study. Active, 199 deploys since Jan 30. - [#0007 Roof Commander](https://daltoncox.com/jobs/roof-commander.md): Multi-tenant attribution with a tenant-facing agent. Every closed job traced to its source; unknown stays unknown, never redistributed. Case study. Active, 7 deploys since Jul 10. ## Fundamentals - [01 Proof, not adjectives](https://daltoncox.com/fundamentals/proof-not-adjectives): Media is evidence. Copy names facts. - [02 One flag](https://daltoncox.com/fundamentals/one-flag): Orange marks state and action. Nothing else is colored. - [03 Hairlines draw, shadow lifts](https://daltoncox.com/fundamentals/hairlines-not-shadows): Structure is a line. Only media casts a shadow. - [04 Identical frames](https://daltoncox.com/fundamentals/identical-frames): Every piece of media sits in the same 4:3 frame. Content supplies the color. - [05 Earned motion](https://daltoncox.com/fundamentals/earned-motion): Three reasons to move: state changed, something entered or left, a value moved. Never ambient. - [06 Hierarchy by spacing](https://daltoncox.com/fundamentals/hierarchy-by-spacing): One display moment per page. After that, size stays quiet and space does the work. - [07 Only what's in frame](https://daltoncox.com/fundamentals/only-whats-in-frame): Upgrade the surface being filmed. Nothing around it. ## Proof - [Ships](https://daltoncox.com/ships): every production deploy since Sep 1 by day, project and hour. - [board.json](https://daltoncox.com/board.json): the board as data, with live deploy counts. - [llms-full.txt](https://daltoncox.com/llms-full.txt): every ticket in one file. ## Optional - [Crew](https://daltoncox.com/crew): who builds this. - [LinkedIn](https://www.linkedin.com/in/dalton-galaxyco) --- # #0001 OneLine > What does my agent actually know about me? - Kind: showroom - Status: Active - Entity: GalaxyCo - Role: Design, build, run - Stack: Next.js, Postgres, Vercel - Started: Oct 2026 - Platform: web - Production deploys since Sep 1: 153 (since Oct 13), read live from Vercel - Last deploy: 7 h ago (2026-10-16T23:58:38.210Z) - Live: https://brain.galaxyco.ai - Page: https://daltoncox.com/jobs/oneline ## 01 The question: An agent is only as good as what it can reach. Most people's agents start every session from nothing. The context that would make them useful is scattered across chats, files and tools, and none of it is somewhere the person can open and read. OneLine gives each agent one place: a Brain. The room where you talk to it and the library it works from, side by side, in the open. *Clip, 8s: brain.galaxyco.ai, the front door. (https://daltoncox.com/clips/oneline.mp4)* ## 02 The room: One Brain per agent. The room and the library, together. A Brain belongs to an agent, not to a person. Inside it, the Room is where you talk. The agent listens for free until it is mentioned, tapped, or a decision lands. When it wants to act outside the room, it asks first, through an approval gate only its owner can decide. The rail on the left is every Brain you can enter; collapse it and the room takes the width. *Clip, 6s: The Room: two people, two agents, one gate waiting on its owner. Rail collapsed, then expanded. (https://daltoncox.com/clips/oneline-room.mp4)* ## 03 The gate: Listening is free. Acting needs a yes. This is the rule the product is built on. An agent can read everything in its Brain and say anything in the room. The moment it wants to send, book, pay or delete, a gate opens and waits. Try it. The agent proposes sixteen drafts; three have open questions. Approve, and the thirteen go while the three stay held. Deny, and nothing leaves. *Playable demo (gate): A working gate, the same logic the Room runs.* ## 04 The library: The library is what the Brain knows. You can open it. One library per Brain, shared by its people and agents. Instructions, workflows, documents and memory notes live in Spaces with nested folders. There is no global pile; every item lives in exactly one scope. Your agent's memory is not a black box. You can see it, read it, edit it. *Still: The Main Brain library: agent instructions, workflows, deliveries, each a Space. (https://daltoncox.com/stills/oneline-library.webp)* ## 05 The shelf: One account opens the shelf and the Brain. galaxyco.ai is the front door: free workflows for your agent, published straight from a library. Each one is a library-shaped package, so adding it is one tap: account, Brain, item in place. Bring an existing agent and it unpacks what it knows into your library while you watch. Nothing is imported in the dark. *Still: One tap does the whole onboarding. (https://daltoncox.com/stills/oneline-adddemo.webp)* ## 06 The loop: Request, build, send, it learns. This is the business. A client asks, in their Brain. The work is built in a lab session with an engineer beside them, live, until the agent does the job. It is sent to the Brain, and the library grows with every order. Not a prompt pack. A working session. *Still: The delivery loop, step one. (https://daltoncox.com/stills/oneline-loop.webp)* ## 07 Result: Live in production. Built in slices. Twenty-nine slices carded and shipped in order: realtime room, mentions and wakes, approval gates, shared library, Brain provisioning, agent presence, billing, the free shelf, the claim flow, the installable Brain, email and calendar behind the owner wall, Brain export, Send to Brain. Production schema at migration 34. Four founding participants: two people, two agents. The ship count below is live. *From the decision log on the vision page, Oct 16.* | | | |---|---| | Slices | 29 carded · 28 live | | Schema | 34 migrations | | Founding | 2 people · 2 agents | | Ships | 153 since Oct 13 | ## 08 Learned: The identity came first this time. Choosing the construction-drawing direction before the product settled every later screen. Every slice since has had somewhere to land. The next thing on the board: the Refined identity wired through the product, the admin surface for library setup, and the landing rebuilt around the Dive. *Clip, 8s: Where it starts. (https://daltoncox.com/clips/oneline.mp4)* ## Punch list (3 open) - Wire the Refined identity into the product - Admin surface for library setup - Landing page --- # #0002 GalaxyCo.ai > How does every site on the studio get the same motion without writing it twice? - Kind: showroom - Status: Active - Entity: GalaxyCo - Role: Design, build, run - Stack: Next.js, motion/react, shadcn registry, Vercel - Started: Sep 2026 - Platform: web - Production deploys since Sep 1: 77 (since Sep 14), read live from Vercel - Last deploy: 24 h ago (2026-10-16T07:14:07.930Z) - Live: https://gc-motion-galaxy-co-ai.vercel.app - Page: https://daltoncox.com/jobs/galaxyco ## 01 The question: Every site re-invented its reveals, and none of them matched. The studio ships several sites a year. Each one wrote its own entrance, counter, hover and page transition, with its own numbers, and the result was five motion dialects that all felt slightly off next to each other. The fix is one motion system, published as a registry any site installs with one command. The brand comes from the site's own CSS variables; the registry never knows the brand. *Clip, 8s: The hero recipe: nav, eyebrow, headline, body, media, each on a sequence token. (https://daltoncox.com/clips/galaxyco.mp4)* ## 02 The lab: Installed into this page, from the registry. What is running beside this text is not a recording. Each primitive was installed into this site from the registry's own JSON, the same files any site gets from `npx shadcn add`, and it runs here with the real runtime. Switch the brand and watch nothing break: the system only ever reads the host's variables. Seven primitives and five effects. Reveal, stagger and text reveal are entrances; counter, magnetic and presence respond to you; parallax is scroll-linked and capped. The effects are the ambient layer a brand may or may not allow, which is why they are a separate shelf. *Playable demo (lab): The registry, live. Pick a primitive, switch the brand, run it again. The runtime loads only on this page.* ## 03 The rules: One file holds every number. Six durations, four easings, one spring, three travel distances, two stagger gaps. They live in a single tokens file, mirrored in CSS, and the registry's verify step fails on a time literal anywhere else. A value not in the table is a stop-and-ask, not an addition. Every primitive moves transform and opacity only, ships a server-rendered resting pose, and falls back to a crossfade when the OS asks for less motion. This site runs a CSS port of the same tokens; the lab above loads the real runtime, and only here. *The whole table. Nothing moves on a number that is not in it.* | | | |---|---| | Durations | 100 · 150 · 200 · 300 · 500 · 800 ms | | Easings | standard · enter · exit · emphasized | | Spring | press: 500 / 30, small elements only | | Travel | 8 · 16 · 24 px, 24 is the ceiling | | Stagger | 40 · 60 ms | | Verify | fails on any time literal outside tokens | ## 04 Result: Twenty items on the shelf. Sites installing, not copying. Seven primitives, six effects including two GPU shaders, four sections. Each is a registry item with its own URL, so a site adds one line and gets the file, the dependency and the tokens. Results Roofing migrates first; every later upgrade on this board applies the same toolkit. Ship count below is live. *From the registry index, read tonight.* | | | |---|---| | Registry | 20 items at /r/*.json | | Primitives | 7 | | Effects | 6 · 2 on the GPU | | Sections | 4 | | Ships | 77 since Sep 14 | ## 05 Learned: One library. Two motion libraries in one site is how motion gets slow. The portfolio you are reading dropped its runtime entirely and kept the tokens in CSS; the one page that needs the runtime loads it alone. That split, system in one place and numbers in one file, is the whole lesson. *Clip, 8s: Replayed. (https://daltoncox.com/clips/galaxyco.mp4)* ## Punch list (3 open) - Registry route per primitive - Hero recipe settles under 1.2s - Migrate results-roofing-www first --- # #0003 Delta > How do I run an agency from one screen with an agent beside me? - Kind: showroom - Status: Active - Entity: GalaxyCo · owned - Role: Design, build, run - Stack: Next.js, Postgres, Vercel - Started: Sep 2026 - Platform: web - Production deploys since Sep 1: 320 (since Sep 25), read live from Vercel - Last deploy: 4 d ago (2026-10-13T14:48:11.951Z) - Live: https://delta.galaxyco.ai - Page: https://daltoncox.com/jobs/delta ## Context Agency work lives in six tools: chat, tasks, files, analytics, email, approvals. The operator spends the day switching between them. ## Role Design, build, run. Owned outright. ## Approach One operating system with an agent as a peer, not a chatbot. Floating sidebar, right drawer for detail, an agent dock that expands into a session with its own charts. ## Solution The Command Center: a task comes in, the agent acts, the result lands, the operator approves. One screen. ## Result The busiest repo in the workspace. 344 production deploys in three weeks. ## Learned Build for yourself first. Every screen was used the day it shipped. *Clip, 7s: The landing. The Command Center clip, the one that counts, needs a signed-in session and comes next. (https://daltoncox.com/clips/delta.mp4)* ## Punch list (3 open) - Polish the Command Center conversation path - Film the one workflow - Approval gate on agent writes --- # #0004 AthleteEra > What's a college athlete's card worth tonight? - Kind: showroom - Status: Active - Entity: Solo - Role: Founder, design, build - Stack: Next.js, Drizzle, Neon, Ably, Stripe Connect - Started: Mar 2026 - Platform: web - Production deploys since Sep 1: 0, from the spec, read live from Vercel - Page: https://daltoncox.com/jobs/athleteera ## 01 The arena: Five cards each. The score moves the cards. This is the live H2H matchup, the one screen that is the product. Your five athletes across the bottom, the opponent's across the top. Every basket, board and steal lands as fantasy points on a card, and the card's value moves with it. The epicenter pulses on every play. The feed here is a seeded script, so the night is invented, but the arena is the real one: the same reducer, cards and clock. Press Play. Speed it up. Start another game and the names stay while the night changes. *Playable demo (arena): Playable. Names and numbers are invented; the reducer is the product's.* ## 02 The model: Three heads, one card. A brand studio for athletes, fantasy-style card leagues for fans, and a card market where values move on real performance. Fans first; the DFS model proved the beachhead, and the matchup is where fans spend the night. The card is the unit across all three. The athlete's page issues it, the league plays it, the market prices it. *Three heads. One card.* | | | |---|---| | Studio | athlete pages, NIL-ready | | Leagues | H2H card battles, live | | Market | values move on performance | | Payouts | Stripe Connect | ## 03 The feed: Plays in, cards out. Plays arrive from Sportradar, land in Redis, and fan out over Ably to every open arena. A reducer turns each play into fantasy points and a value move. The arena is a pure function of the event log, so a reconnect replays the log and lands in the same state. Points: 2PT 2, 3PT 3, FT 1, REB 1.2, AST 1.5, STL 3, BLK 3, TO minus 1. Win probability is the score gap against the time left, nothing cleverer. *The path of one play. The reducer above runs the same table.* | | | |---|---| | Source | Sportradar | | Store | Redis | | Fan-out | Ably | | Reducer | event log → cards | | Points | 2PT 2 · 3PT 3 · REB 1.2 · AST 1.5 · STL 3 | ## 04 Learned: Pick the one screen that is the product and build that first. Everything else is a form. The schema merged first, then the arena spec. The arena above is that spec running on a script; the real feed comes next, and nothing in the arena changes when it does. The drawing below was the plate until tonight. *Drawing: The plate, as drawn before the arena ran.* ## Punch list (3 open) - Wire the arena to the real feed - Fan screens - Stats feed: Sportradar to Redis --- # #0005 BadBeats > Can a player verify the game wasn't rigged? - Kind: showroom - Status: Active - Entity: Thunderbird Labs - Role: Founder, design, build - Stack: Next.js, Drizzle, Neon, Base - Started: 2026 - Platform: web - Production deploys since Sep 1: 0, from the spec, read live from Vercel - Page: https://daltoncox.com/jobs/badbeats ## 01 Play it: The house commits before you pick. This is the Tower, working. Eight levels, three tiles each, two of them safe. The multiplier climbs with every level; cash out whenever you like, or bust and lose the bet. Play money, no chain, no account. Before the round starts, the house publishes the SHA-256 of its secret seed. You can type your own seed. Neither side can change its mind after that, which is the whole point. *Playable demo (tower): Playable. The house runs in your browser here; in the product it runs on the server. The verification is the same code.* ## 02 The scheme: Commit, reveal, verify. Each level's bust tile is derived, not drawn: HMAC-SHA256 keyed with the server seed over your seed, the round number and the level, first four bytes modulo three. The server seed is secret during the round and revealed after it. Verification needs nothing from the house. Hash the revealed seed and compare it to the commitment; recompute each level and compare it to what you saw. The Verify button above does exactly that, with Web Crypto, in your browser. *The scheme in five lines. Nothing hidden, including the edge.* | | | |---|---| | Commit | sha256(server seed) | | Bust | HMAC(server, seed:nonce:level)[0..4] mod 3 | | Odds | 2 of 3 safe per level | | Payout | 1.5ⁿ × 0.98 | | Edge | 2%, stated | ## 03 The plan: Three phases, kept apart on purpose. Phase one is this: email sign-in, the Tower, no blockchain. Phase two puts it on Base with wallet sign-in and real stakes. Phase three is growth. The order is fixed so the fairness scheme is proven before any money touches it. Planning is complete: product, game logic, the cryptographic scheme, the schema. The build is next, and the Tower on this page is its first running piece. *From the project's planning documents.* | | | |---|---| | Phase 1 | Tower, email auth, no chain | | Phase 2 | Base, wallets, real stakes | | Phase 3 | growth | | Games | Tower, then Mines, Plinko, Dice | ## 04 Learned: Specify the fairness before the game. The proof is the product; the game is the demo of it. Writing the commitment scheme first made every later screen a matter of showing it, not inventing it. The drawing below was the plate until tonight. The playable version above replaced it in one evening because the scheme was already decided. *Drawing: The plate, as drawn before the Tower ran.* ## Punch list (3 open) - Phase 1 Tower, no chain - Proof panel: commit, reveal, verify - Database schema --- # #0006 QuickClaims > What's missing from this insurance scope? - Kind: case study - Status: Active - Entity: Rise Roofing Supplements · licensed - Role: Design, build, run - Stack: Next.js, Drizzle, Neon, Vercel - Started: Jan 2026 - Platform: web - Production deploys since Sep 1: 199 (since Jan 30), read live from Vercel - Last deploy: 7 h ago (2026-10-17T00:22:11.484Z) - In one line: A four-layer parser that reads carrier PDFs into structured line items at 99%, and an email engine that files correspondence to the right claim. - Page: https://daltoncox.com/jobs/quickclaims ## Context Roofing supplement teams read insurance scopes by hand and miss line items that pay. Rise Roofing Supplements wanted the reading done by software, with their people checking the result instead of producing it. ## Role Design, build, run. One builder, one client, a standing rule that no work starts without a written proposal accepted by all four parties. ## Approach A four-layer parser that reads the carrier's scope PDF into structured line items, then an email engine that files adjuster correspondence to the right claim by homeowner name and claim number. ## Solution Scope in, line items out, with the subfolder hierarchy carriers use. Invoice billing with void. A client dashboard with live scope, roadmap, tickets and logged hours. ## Result Parser at 99% on the client's scopes. Email triage at 95%. Licensed to the client; the parser architecture and training data stay reusable. ## Learned The spec sheet beat the proposal. When the long-form plan read as fluff, a plain list of what ships and when was what the client could sign. *Drawing: scope PDF in, line items fill. The clip replaces it when the screen ships.* ## Punch list (3 open) - Parser handles multi-page supplements - Email tool: per-user permission model - Subfolder tabs replace the group-by-trade view --- # #0007 Roof Commander > Which lead sources actually produce closed jobs? - Kind: case study - Status: Active - Entity: GalaxyCo - Role: Design, build, run - Stack: Next.js, pnpm monorepo, Postgres, Vercel - Started: Jul 2026 - Platform: web - Production deploys since Sep 1: 7 (since Jul 10), read live from Vercel - Last deploy: 27 h ago (2026-10-16T04:11:31.861Z) - Live: https://roofcommander.ai - In one line: Multi-tenant attribution with a tenant-facing agent. Every closed job traced to its source; unknown stays unknown, never redistributed. - Page: https://daltoncox.com/jobs/roof-commander ## Context Roofers buy leads from six places and cannot say which ones turn into closed jobs. Every vendor reports its own numbers. ## Role Design, build, run, under GalaxyCo. ## Approach Honest attribution. Show exactly which source produced which closed job and how much revenue. Unknown stays unknown and is never redistributed. That rule lives in the code. ## Solution A multi-tenant platform: site, backend, and a tenant-facing agent named Homer. A homeowner portal is specced in five checkpoints. ## Result Nine checkpoints complete. Tenant zero live. ## Learned Name the rule that must stay true and write it at the top of every spec. Blind find-and-replace broke the build once; the naming rule stopped it from happening again. *Clip, 7s: roofcommander.ai. Type a company name and the site preview rebuilds around it. No sales call. (https://daltoncox.com/clips/roof-commander.mp4)* ## Punch list (3 open) - @rc/ui depth pass - Homeowner portal CP-P1 - Twilio A2P registration --- # Fundamentals ## 01 Proof, not adjectives > Media is evidence. Copy names facts. Every job on the board has a clip or a plate that says what the clip will show. Nothing on this site calls the work beautiful, cutting-edge, or passionate. A reader decides with their eyes. Give them eight seconds of the real thing and a table of facts, and get out of the way. ## 02 One flag > Orange marks state and action. Nothing else is colored. A survey stake carries one flag so nobody misses it. This site carries one color for the same reason. It marks what is active and what you can press. Data has no hue. Numbers are ink, set in mono, and they line up. ## 03 Hairlines draw, shadow lifts > Structure is a line. Only media casts a shadow. Four surfaces: paper, well, sheet, cover. Hairlines separate them; nothing structural glows. The first version of this site had no shadows at all, and it read as a spreadsheet. Media sits in a well and casts the one shadow, so a clip reads as an object lying on the sheet. Hover lifts it. Nothing else on the page is allowed to. ## 04 Identical frames > Every piece of media sits in the same 4:3 frame. Content supplies the color. Seven products built at different times for different people will never match each other. The frame does the matching. Same ratio, same radius, same hairline, and a rough screen reads as deliberate. ## 05 Earned motion > Three reasons to move: state changed, something entered or left, a value moved. Never ambient. Nothing on this site loops. The name settles in once. Cards rise into view once. A frame plays when you ask it to. Transform and opacity only, and if you have asked your device for less motion, you get fades. ## 06 Hierarchy by spacing > One display moment per page. After that, size stays quiet and space does the work. One thing is set at display size per page: the name on the board, the job's name on its ticket. Everything after it steps down and stays down. What separates a section from the next is distance, not a bigger headline. ## 07 Only what's in frame > Upgrade the surface being filmed. Nothing around it. Every product here is a working business with a roadmap. The portfolio does not get to reorder those roadmaps. Pick the eight seconds, fix the surface those seconds need, film it, and move on. # Ledger - Results Roofing: marketing site and customer portal. CB Media, Shipped. https://resultsroofing.com - Fabricator OS: shop operations. GalaxyCo, Active. - ClaimFX: PDF to Xactimate, folded into #0006. GalaxyCo, Maintained. - Newco platform: tenancy spine, 22 tools. Newco, NDA. - Rivet: rivetokc.com. Client, Shipped. https://rivetokc.com - Wolfepack: wolfepacksp.com. Client, Shipped. https://wolfepacksp.com