Skip to content

Brand Deals: port the deal board from glados - #15

Merged
Bennettxai merged 1 commit into
Bennettxai:mainfrom
brodyautomates:brand-deals-port
Sep 21, 2026
Merged

Bennettxai merged 1 commit into
Bennettxai:mainfrom
brodyautomates:brand-deals-port

Conversation

@brodyautomates

Copy link
Copy Markdown
Contributor

Ports the brand-deal surface from brodyautomates/glados into FounderOS. Straight port — no behaviour invented, nothing dropped.

What's here

New

  • app/brand-deals/page.tsx + components/brand-deals/DealBoard.tsx — the board
  • components/PipelineChart.tsx — dependency DealBoard imports; FounderOS didn't have it
  • lib/brand-deals.ts — the bdpilot/gsend reader
  • app/api/brand-deals/{route,draft,override,send} — 2 GET, 3 POST
  • tests/brand-deals.test.ts + 3 fixtures (fully synthetic, *.example domains)

Edited

  • lib/schemas.ts — BrandDealOutcomeSchema, BrandDealOverrideSchema
  • lib/db.ts — brand_deal_overrides table + repo, Zod-validated on the way out like every other row
  • lib/nav.ts — Operate group, after Funnel
  • tests/smoke.test.ts / tests/smoke-api.test.ts — registered so the coverage nets stay exhaustive

Two things to know before merging

  1. It reads live host state, not seeded data. lib/brand-deals.ts pulls ~/.config/bdpilot/state.json, ~/.config/bdpilot/bdpilot.log, and shells out to ~/bin/gsend. On a host without the bdpilot daemon the board renders empty. This cuts against the repo's larp-first rule — every other view looks alive off seeds. Adding a seeded fallback is a follow-up if you want the demo to show something.
  2. POST /api/brand-deals/send sends real email via the gsend binary where it exists. Worth a look before this goes anywhere shared.

Paths are overridable via BDPILOT_STATE, BDPILOT_LOG, BDPILOT_LIST_FILE, GSEND_BIN, GLADOS_SENDER_NAME.

Verification

  • npm test — 984/984 pass (18 are the ported brand-deal tests)
  • npm run typecheck — clean
  • npm run build — clean, /brand-deals at 11.7 kB

🤖 Generated with Claude Code

Straight port of the brand-deal surface — page, DealBoard, the bdpilot/gsend
reader and its four API routes — plus the PipelineChart dependency the board
imports and FounderOS did not have.

Reads live host state (~/.config/bdpilot/state.json, the gsend binary) exactly
as it does in glados; no seeded fallback, so the board is empty on a host
without the daemon. Overrides persist to a new brand_deal_overrides table
through the repo layer, Zod-validated on the way out like every other row.

Registered in both smoke nets and the Operate nav group.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Bennettxai
Bennettxai merged commit ad46d77 into Bennettxai:main Sep 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants