foolish-bandit ↗ analysis ↗ GitHub foolish-bandit/gary
A Mike fork reshaped for non-technical lawyers: simplified UX, guided workflows, and legal-practice terminology throughout.
foolish-bandit/gary is a product-focused fork of willchen96/mike targeting attorneys who won't configure API keys or manage infrastructure themselves. The bulk of the commit history is a layered UX simplification: Mike's developer-facing language stripped out, "Projects" renamed to "Matters", generic empty/loading/error strings replaced with practitioner-facing copy, and a simplified home screen with four action cards (Ask Gary, Upload Document, Review Contract, Draft Something) instead of a bare chat input.
On top of that baseline, foolish-bandit added three guided workflow shells - contract review at /review, "Explain This", and "Draft Something" - each built as a frontend-only wrapper over Mike's existing API routes. No new backend routes, no schema changes. The review shell hardcodes an eleven-topic review prompt (parties, dates, governing law, payment terms, termination, indemnity, confidentiality, assignment, dispute resolution, unusual clauses, missing clauses) and hands the result off to the standard chat thread.
Deployment work covers both frontend and backend: Cloudflare Workers via @opennextjs/cloudflare for the frontend, Railway/Render documentation for the backend, and a dev-auth bypass (NEXT_PUBLIC_GARY_SKIP_AUTH) for local testing without Supabase.
There is acknowledged follow-up debt: internal identifiers (MikeDocument, MikeProject, MikeIcon, the mike.selectedModel localStorage key) were deliberately left unrenamed to keep diffs manageable, and the /account/models route URL hasn't been redirected despite the tab label changing.
What's in it
- Gary, not Mike A clean, user-facing rebrand from Mike/MikeOSS to Gary/GaryOSS across every surface a lawyer sees.
- Three guided workflows Review a contract, Draft something, and Explain this clause each get their own structured on-ramp instead of dumping users into a blank chat.
- Lawyer-facing home screen The assistant's logged-in landing page is four action cards aimed at practitioners, not a developer playground.
- Talks like a lawyer Projects become Matters, Files become Documents, and empty, loading, and error states are rewritten as action-oriented prompts.
- Citations on the sleeve Answers are framed as document-backed, and the UI says so plainly when a source can't be cited.
- Deploys to the open web A Cloudflare Workers path for the frontend and a documented Railway/Render playbook for the backend turn Gary into something you can click on, not just clone.
- Demo-mode door An environment-gated auth bypass lets foolish-bandit walk people through the UI without a real login.
Direction
brandingcontract-reviewdrafting
Activity
foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub Show 36 more
foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub foolish-bandit ↗ analysis ↗ GitHub Threads of work (detailed view)
foolish-bandit writes down exactly what its fork is for
A documentation suite that quietly settles the biggest question about this fork: who it's built for and how far along it actually is.
foolish-bandit writes the deployment manual the rest of us skipped
A documentation-only update that spells out exactly how this fork runs in production - not how it's supposed to.
foolish-bandit writes the deployment manual gary was missing
The fork's backend won't run where the rest of the project lives, so foolish-bandit documented exactly where it should run instead - and which keys never leave home.
Backend deploy guide for Railway and Render
foolish-bandit documented the Express backend deployment in three commits: a 124-line `backend/DEPLOY.md` covering build settings, env vars, and host-specific steps, a removal of `backend/bun.lock` to stop Nixpacks from provisioning Bun, and a one-line fix adding `NEXT_PUBLIC_SUPABASE_URL` to `backend/.env.example` because Railway needs it.
foolish-bandit makes Gary admit when it can't cite a source
Every answer now carries a visible trust signal - and a blunt warning when no source is attached.
Citation expectation copy and warning component added across guided shells
foolish-bandit tightened the citation framing across the three guided workflow shells and the main assistant. A new `CitationExpectationNote` component in `AssistantMessage.tsx` renders an amber "No source citation shown. Treat this answer as unverified." warning when citations are absent, and a citation card list when they're present.
foolish-bandit makes Gary admit when it can't show its work
Every AI answer now wears its verification status on its sleeve - cited, or flagged as unchecked.
Citation cards and uncited-answer warnings added across assistant surfaces
A copy-and-UI pass on the Gary fork tightens what users are told about citations across the assistant shell, Review, Draft, and Explain flows. A new `CitationExpectationNote` component renders clickable citation cards when citations exist and an amber "No source citation shown. Treat this answer as unverified." warning when they don't.
foolish-bandit teaches Gary to say Matter, not Project
A clean, UI-wide rename swaps generic-software language for the word law firms actually use to organise their work.
"Project" renamed to "Matter" in user-facing copy across 21 files
foolish-bandit renamed "Project"/"Projects" to "Matter"/"Matters" in user-visible strings across 21 frontend files. Route names, identifiers (`projectId`, `useProjects`, the `/projects` route), and backend contracts were left unchanged - this is a label-layer change only.
"Projects" renamed to "Matters" across navigation and UI copy
foolish-bandit swapped legal-practice terminology into Gary's UI - Projects become Matters, uploaded files are consistently Documents - while leaving every URL, API route, database field, and TypeScript type untouched. Surface vocabulary only.
foolish-bandit adds a no-login demo mode to Gary
You can now walk through the whole interface without first standing up an account system.
foolish-bandit adds a one-switch demo mode for the Gary UI
A build-time toggle lets you show off the interface without standing up a real login system first.
NEXT_PUBLIC_GARY_SKIP_AUTH build-time flag bypasses Supabase login
A single commit adds a frontend-only Supabase auth bypass gated on `NEXT_PUBLIC_GARY_SKIP_AUTH=true`. When set, `AuthContext` skips the auth flow and seeds a fake demo user. An amber banner renders in the protected layout. Backend calls still 401 - the bypass is for UI inspection only.
NEXT_PUBLIC_GARY_SKIP_AUTH flag bypasses Supabase login for dev/demo
foolish-bandit added a build-time flag that lets the frontend run as a fake demo user without a real Supabase session. Set `NEXT_PUBLIC_GARY_SKIP_AUTH=true` at build time and `AuthContext` skips the auth flow entirely, seeding a fixed demo identity. An amber banner at the top of the protected layout makes the mode visible.
foolish-bandit strips the developer-speak out of the settings page
The account screen now talks to lawyers, not engineers.
foolish-bandit stops talking like a developer tool
A copy overhaul rewrites Gary's settings to read like a legal product, not a setup screen for engineers.
Model/API key config UX de-jargoned to assistant/service-key language
A single commit rewrites ~24 user-visible strings in the `/account/models` flow, swapping developer vocabulary for plainer terms: "Models & API Keys" becomes "AI configuration," "Model Preferences" becomes "Default assistant," "Tabular review model" becomes "Assistant for tabular reviews," and API key labels drop the "API Key" suffix to just "Anthropic (Claude) key." No behavior changes.
Developer terminology stripped from account settings and model picker copy
foolish-bandit ran a frontend-only copy pass replacing API-vendor language in the account settings, model picker, and key-prompt surfaces. "Models & API Keys" becomes "AI configuration", "API key required" becomes "GaryOSS isn't configured yet". No identifiers, no routes, no backend changes.
foolish-bandit is giving Gary a guided drafting desk
A new drafting screen walks you from "what kind of document" to a finished request, instead of handing you a blank chat box.
foolish-bandit builds Gary a guided front door for drafting
A new drafting flow walks lawyers from "what do I need" to a first draft without making them stare at a blank chat box.
foolish-bandit/gary: frontend drafting shell with 8 document types
Commit `7c520d4f` adds a `/draft` page that mirrors the `/review` shell: a guided two-step UI for drafting legal documents entirely on the frontend, with no backend changes. The home "Draft Something" card is rewired from `/workflows` to `/draft`.
foolish-bandit/gary: Draft Something shell reusing existing chat plumbing
Commit `7c520d4f` adds a `/draft` page with a two-step UI: choose one of eight document types, fill in description and optional audience/tone, optionally attach a document, then hand off to the existing assistant chat. No backend changes. The PR merged in minutes.
foolish-bandit bolts a one-click contract review onto Gary
A guided two-step flow that turns any uploaded document into a structured first-pass review, without touching the backend.
foolish-bandit builds a guided front door for contract review
A new three-step flow walks a lawyer from picking a contract to a structured first-pass review without any new backend work.
foolish-bandit/gary: frontend contract review shell at /review
Commit `16c7bffd` adds a 434-line `/review` page that gives lawyers a guided path to contract review -- pick or upload a document, confirm what the assistant will look for, then land in the chat with a pre-built prompt attached. No backend changes.
Contract review shell added as a guided frontend wrapper over existing chat
foolish-bandit built a two-step contract review flow at `/review` without touching any backend routes. Upload or select a contract, see what Gary will check, kick off the review - then land in the existing chat thread. The review prompt is baked into the frontend bundle.
foolish-bandit teaches Gary to talk like a lawyer's tool, not a developer's
A sweep of the interface swaps debug-speak error and empty-state messages for copy a working lawyer actually understands.
foolish-bandit rewrites Gary to talk like a lawyer, not a developer
Every blank screen and error message in the interface now tells you what to do next, in plain English.
Frontend-wide sweep replaces generic empty/loading/error strings with action-oriented copy
A 25-file frontend pass rewrites the generic developer-default strings that ship in the upstream codebase. Empty states now describe what the user can do, not what's absent. Error boundaries grow a working Try Again button. Loading strings name what's actually happening.
Empty, loading, and error strings rewritten for a practitioner audience
foolish-bandit swept 25 frontend files to replace generic placeholder strings - "No chats yet", "An error occurred", "Processing..." - with action-oriented copy that names what the user should do next. +93/-79, no backend touched.
README adds upstream attribution and names the target audience
Two small README commits clarify what Gary actually is: a fork of willchen96/mike aimed at attorneys who are less tech-savvy. That stated audience is the signal worth reading here.
foolish-bandit turns Gary's blank screen into a front door
The empty chat greeting becomes a four-card launchpad that points users at what the assistant can actually do.
foolish-bandit gives Gary a front door instead of a blank chat box
The assistant's home screen now greets users with four obvious things to do, not an empty prompt and a blinking cursor.
Four action cards replace the bare empty state on the assistant home
foolish-bandit reworked the authenticated home view so a non-technical lawyer lands on four plain-English starting points instead of a bare chat input. All four wire into routes that already existed - no backend changes, no new APIs.
foolish-bandit/gary: four action cards replace the bare assistant home
Commit `d761a8da` replaces the empty-state "Hi, {name}" screen in `InitialView.tsx` with a 2x2 grid of lawyer-facing action cards. This is the seed of the guided-mode UX direction the fork builds out across the subsequent three workflow shells.
Next.js frontend onto Cloudflare Workers via @opennextjs/cloudflare
Four commits to get the Next.js frontend shipping to Cloudflare Workers: a `next` version bump to satisfy the peer range, a minimal `wrangler.jsonc`, explicit `cf:build`/`cf:deploy`/`cf:preview` npm scripts, and deletion of `frontend/bun.lock` to stop Cloudflare's auto-detection from picking Bun.
foolish-bandit/gary: Cloudflare Workers deploy path via @opennextjs/cloudflare
Three commits add a documented, working deploy path to Cloudflare Workers: Next.js bumped to 16.0.11 to satisfy `@opennextjs/cloudflare`'s peer requirement, a `wrangler.jsonc` added, and `cf:*` npm scripts plus README instructions documented.
foolish-bandit renames Mike to Gary, all the way down
A surface-wide rebrand that touches everything a user sees and nothing underneath.
foolish-bandit renames Mike to Gary, but only skin-deep
A fresh fork swaps every visible "Mike" for "Gary" - while the plumbing underneath still answers to its old name.
User-facing rebrand from Mike to Gary across 24 files
foolish-bandit renamed everything a user would see - page titles, the sidebar, system prompts, DOCX author attribution - while deliberately leaving all internal identifiers alone. Clean diff discipline with acknowledged follow-up debt.
Mike/MikeOSS renamed to Gary/GaryOSS in user-visible surfaces
The foundational soft-fork rename: HTML titles, sidebar, AI system prompts, DOCX tracked-changes author, the default R2 bucket name, and npm package names all swap from Mike to Gary. Internal identifiers are explicitly left in place.
foolish-bandit is building a toaster, not a Boeing 777
A fresh set of planning and handoff docs tells you exactly what this fork is, what it isn't, and what's actually running.
Handoff docs, Explain flow, local font, and UI primitive expansion
A broad frontend pass adding a set of handoff/architecture/roadmap docs, a new Explain page alongside Review and Draft, a migration from runtime `next/font/google` to locally bundled `@fontsource/inter`, and a set of shadcn-style UI primitives (card, alert, label, separator, tabs, textarea, skeleton) adopted across pages.
foolish-bandit/gary: shadcn/ui component layer added to the frontend
Commit `58ef971c` introduces `frontend/src/components/ui/` with seven shadcn/ui primitives and wires them into the Explain This page, globals.css, and layout. This is the first structural divergence from upstream Mike's plain-Tailwind approach.
foolish-bandit gives Gary a paste-and-explain panel
A third workspace lands in this fork of Mike: drop in dense legal language, get a plain-English read back.
foolish-bandit/gary: shadcn/ui primitives, Inter font, and Explain This page
PR #15 lands a combined change: seven shadcn/ui component primitives, a self-hosted Inter font replacing `next/font/google`, a new `/explain` page built on those primitives, and a set of UX fixes across the draft/review flows and sidebar.
foolish-bandit builds a plain-English decoder for legal text
A new page in the Gary fork turns dense legal language into a structured, four-part explanation anyone can follow.
foolish-bandit/gary: /explain shell completes the guided-workflow trio
Commit `b3287856` adds a 159-line `/explain` page -- the third and last of foolish-bandit's guided workflow shells. Paste legal text, optionally provide context and goal, and the page assembles a structured prompt and routes to the chat.
foolish-bandit builds a paste-a-clause explainer for Gary
A new screen lets you drop in any chunk of legal text and ask for it back in plain English.
foolish-bandit/gary: /explain page and consistent backend-unavailable messaging
Commit `b3287856` adds a 159-line `/explain` page that wraps pasted legal text into a structured prompt and hands off to the assistant chat. It also standardises the error strings across draft and review flows and adds a handful of sidebar and auth-screen fixes.
foolish-bandit makes Gary admit it isn't finished yet
A polish pass swaps vague "try again" errors for an honest message: the backend isn't connected.
Walkthrough polish pass fixes localStorage bug and softens unreachable-backend errors
foolish-bandit did a manual walkthrough of the new Gary flows and pushed a small cleanup: a localStorage desktop-sidebar bug fix, softened error messages for when the backend isn't reachable, a sidebar nav relabel, upload error surfacing in `InitialView`, and a dev-bypass notice on the login/signup pages.
foolish-bandit makes Gary stop faking its error messages
When a feature isn't wired up yet, Gary now says so plainly instead of telling you to try again.
Walkthrough polish: honest error messages, sidebar label fix, localStorage bug
A small cleanup pass after walking the authenticated Gary flow. Error strings that previously said "Could not start the draft. Try again." now say "This will be available once GaryOSS is connected to the backend." The sidebar's "Assistant" entry was renamed to "Ask Gary." A localStorage bug was fixed where the desktop sidebar state was being persisted using the wrong variable.
foolish-bandit/gary: Explain This flow and UX polish -- closed without merging
foolish-bandit proposed a batch of frontend changes centered on a new `/explain` page, unified backend-unavailable messaging, an "Ask Gary" sidebar rename, and a font strategy swap from `next/font/google` to `@fontsource/inter`. The PR was closed without merging; none of it landed in Gary's main branch.
Pull requests (detailed view)
✅ Merged (19)
foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit #16 Add handoff docs, UI primitives, Explain flow, font migration, and backend-unavailable messaging foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit Show 9 more merged
foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit foolish-bandit · opened 2mo ago · merged 2mo ago by foolish-bandit ⛔ Closed without merge (1)
#14 Add 'Explain This' page, switch to Inter font, and surface dev/back-end availability messaging foolish-bandit · opened 2mo ago · closed 2mo ago