Phase 4: legal-to-finance domain swap and Mike-to-Gordon rename in one atomic PR

Archibald312's Phase 4 PR repositions the fork from legal AI to finance AI - M&A diligence, PE, private credit, leveraged finance, IB, equity and credit research - while simultaneously completing the Mike-to-Gordon brand rename. The two moves touch the same surfaces, so bundling them avoids a second sweep across 89 files.

brandingsummarization

The domain work is concentrated in prompts and taxonomy. The main chat system prompt, the project-context block, tabular extraction and review prompts, and the generate_docx tool description are all rewritten for finance work with explicit citation-auditability framing. The practice-area list is wholesale replaced: 19 legal practices out, 17 finance verticals in. Column presets are handled additively - neutral contract columns carry over, and twelve finance-specific columns are added (Revenue, EBITDA, FCF, Debt Ratio, Interest Coverage, Maturity, Coupon/Rate, Currency, Capex, Margin, Reporting Period, and Net Income).

The twelve built-in workflows are deliberately left untouched; a real finance workflow library is deferred to Phase 11. The existing string-typed practice field plus an "Others" fallback keeps old values rendering in the meantime.

The rename is wider than copy changes: nine type identifiers (MikeMessage, MikeWorkflow, MikeChat, and the rest) become Gordon*, mike-icon.tsx and mikeApi.ts get renamed, MIME types change from application/mike-* to application/gordon-*, the localStorage key changes, and the R2 bucket default changes. Two operational consequences: deployments relying on the default R2 bucket name need to set the variable explicitly, and the localStorage key rename will silently reset every user's last-selected model on their next visit. Archibald312 calls that acceptable one-time friction; assess that against your own user base.

LEGAL_NUMBERING_REF in shared/generateDocx.ts is intentionally not renamed - it refers to Word's built-in numbering style named "legal," not the legal domain. That distinction is documented in decisions.md along with the rationale for deferring workflow names.

Backend and frontend tsc --noEmit clean; Vitest 57/57 passing.

So what Almost nothing here transfers to a non-finance fork - the prompts, taxonomy, and rename are all finance-specific. If your fork is doing a domain swap of its own, the pattern is worth studying: one atomic PR for prompts + identifiers + copy, a `decisions.md` entry recording what was and wasn't renamed and why, and additive column presets rather than a wholesale replacement. Skip the import entirely if your fork stays in the legal domain or is domain-agnostic.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

1 commit from Archibald312/GordonOSS, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
8a33897e Phase 4: Domain swap (legal → finance) + Mike → Gordon rename (#5) Archibald312 2026-05-15 ↗ GitHub
commit body
* Phase 4: Domain swap (legal → finance) + Mike → Gordon rename

Repositions the fork from a legal-AI assistant to a finance-AI assistant
for M&A diligence, PE, private credit, leveraged finance, IB, and equity
and credit research.

Visible copy
- InitialView disclaimer updated to cover financial/investment/accounting/legal advice.
- Layout metadata, login/signup/support pages, and demo-service notice rebranded.
- Chat title generator prompt reframed for the finance domain.

System prompts
- chatTools SYSTEM_PROMPT rewritten with finance framing and citation-auditability emphasis.
- projectChat project-context block updated for finance deal/mandate workstreams.
- tabular extraction/review prompts ("legal document analyst" → "finance document analyst").
- generate_docx tool description rewritten for finance artifacts.

Practice areas
- Replaced 19 legal practices with 17 finance verticals (M&A Diligence, PE, Private Credit,
  Lev Fin, Project Finance, IB, Equity/Credit Research, Restructuring, Public Markets, etc.).
- Old workflow practice values flow through unchanged via string typing.

Column presets
- Kept neutral legal contract presets (apply to finance contracts too).
- Added 12 finance presets (Revenue, EBITDA, Net Income, FCF, Leverage Ratio,
  Interest Coverage, Reporting Period, Maturity, Coupon/Rate, Currency, Capex, Margin).

Mike → Gordon rename
- 9 type identifiers (MikeMessage/Workflow/Chat/... → Gordon*).
- File renames: mike-icon.tsx → gordon-icon.tsx; mikeApi.ts → gordonApi.ts.
- MIME types (application/mike-* → application/gordon-*), localStorage key,
  R2 bucket default, README, docs.
- FORK.md upstream URLs to willchen96/mike intentionally preserved.

Deferred per plan
- All 12 built-in workflows kept untouched; finance workflow library is Phase 11.
- LEGAL_NUMBERING_REF in shared/generateDocx.ts left as-is (it refers to Word's
  built-in 'legal' numbering style, not legal documents).

Rationale recorded in decisions.md. Backend + frontend tsc --noEmit clean;
backend Vitest 57/57 passing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Fix: free-tier guard blocks dev chats with empty allowlist

PR #3 ("allow free-tier LLM in dev mode") wired up the ALLOW_FREE_TIER_LLM
env opt-in but never added an actual dev-mode pathway: ALLOW_FREE_TIER_LLM=true
with an empty FREE_TIER_FIXTURE_ALLOWLIST still throws on every call, even
plain chat with no documents attached, because the empty-allowlist check ran
before the no-docs short-circuit. Users hit a hard error on first chat.

Add a dev-mode bypass: when NODE_ENV !== "production" AND no documents are
attached, allow the call through. Production still requires an explicit
allowlist so the operator has consciously enumerated which fixtures may be
processed. Documents attached in any environment still require allowlist
matching.

Tests: pin the existing empty-allowlist throw to NODE_ENV=production; add
two new tests covering the dev-mode no-doc bypass and the dev-mode-with-docs
strict path. 59/59 backend tests green.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-423.md from inside the repo you want the changes in.

⬇ Download capture-thread-423.md