| ---
|
| title: Judge-GPT
|
| emoji: ⚖️
|
| colorFrom: yellow
|
| colorTo: red
|
| sdk: gradio
|
| sdk_version: 6.17.3
|
| app_file: app.py
|
| pinned: false
|
| license: mit
|
| short_description: AI-native miniature trials under 32B.
|
| tags:
|
| - track:wood
|
| - sponsor:openai
|
| - sponsor:nvidia
|
| - sponsor:modal
|
| - achievement:offbrand
|
| - achievement:fieldnotes
|
| ---
|
|
|
| # Judge-GPT
|
|
|
| Judge-GPT is a cinematic Gradio courtroom for the Build Small Hackathon's Thousand Token Wood track. It turns a compact evidence packet into a two-minute AI-native trial: a clerk opens the docket, two lawyers argue opposite sides, Marcus Aurelius presides, six fixed-perspective jurors vote, and the court seals a verdict.
|
|
|
| The point is not legal advice. It is a small-model theater for structured disagreement: evidence is visible, roles are constrained, hidden reasoning is stripped, and every trial leaves a trace of which agent said what.
|
|
|
| ## Submission Links
|
|
|
| - Hugging Face Space: https://huggingface.co/spaces/build-small-hackathon/JudgeGPT
|
| - Demo video: https://drive.google.com/drive/folders/10pWJ7NVCsnVV7wOlqm4MGWg4Kmh4rMY2?usp=sharing
|
| - Social post: TODO paste final public social post URL
|
| - GitHub repo: https://github.com/aliiqbal24/BuildSmallfinal
|
| - Field guide validator: https://build-small-hackathon-field-guide.hf.space/submit
|
|
|
| ## What Judges Should Try
|
|
|
| 1. Open the Space and keep the default `Trial of Socrates`.
|
| 2. Click `Begin Trial`.
|
| 3. Watch the courtroom progress from intake to verdict.
|
| 4. Hover the judge, clerk, lawyers, and jurors to inspect model/agent threads.
|
| 5. Open the `Evidence Drawer` and `Juror Panel` tabs after the verdict.
|
| 6. Try `Greg Heffley vs Mom` for a lighter family-court case.
|
| 7. Try `Custom` to write a short dispute and up to three pieces of evidence per side directly into the docket book.
|
|
|
| ## Why It Fits Build Small
|
|
|
| - **Thousand Token Wood:** the app is whimsical, theatrical, and AI-native rather than a generic chatbot.
|
| - **Best Use of Codex:** Codex was used throughout implementation, debugging, UI iteration, tests, and commit prep in the connected GitHub repo.
|
| - **Nemotron Hardware Prize:** Nemotron is a core runtime model for the jury and juror vote generation.
|
| - **Best Use of Modal:** the Gradio Space delegates live model inference to a Modal GPU streaming endpoint.
|
| - **Off-Brand:** the UI pushes past stock Gradio with a custom courtroom, animated puppets, docket book, evidence props, audio cues, and verdict staging.
|
| - **Field Notes:** this README documents the build idea, model choices, runtime architecture, limitations, and submission checklist.
|
|
|
| ## Small-Model Budget
|
|
|
| Every named model is under the 32B parameter cap.
|
|
|
| | Role | Model | Budgeted size | Used for |
|
| | --- | --- | ---: | --- |
|
| | Presiding advocate | `openai/gpt-oss-20b` | 20B | Judge, claimant lawyer, respondent lawyer, verdict voice |
|
| | Clerk of style | `openbmb/AgentCPM-Explore` | 4B | Clerk/stage voice |
|
| | Jury ring | `nvidia/Nemotron-Orchestrator-8B` | 8B | Jury panel and six juror votes |
|
|
|
| Displayed aggregate budget: 32B. The app does not use a model above 32B.
|
|
|
| ## How It Works
|
|
|
| Judge-GPT runs a deterministic courtroom sequence over a `CasePacket`:
|
|
|
| 1. Clerk opens the docket.
|
| 2. Judge frames the dispute.
|
| 3. Mike OSS argues for the claimant.
|
| 4. Harvey Vector argues for the respondent.
|
| 5. The evidence record is displayed without adding a third lawyer.
|
| 6. The judge asks a hinge question.
|
| 7. Each lawyer answers from their side.
|
| 8. Nemotron Jury retires the panel.
|
| 9. Six named jurors vote from distinct worldviews.
|
| 10. The judge announces the final verdict.
|
|
|
| The shipped demo cases are:
|
|
|
| - `The Polis v. Socrates`
|
| - `Greg Heffley v. Mom`
|
| - `Custom`, built from the docket-book fields in the UI
|
|
|
| ## Runtime Architecture
|
|
|
| - `app.py` renders the Gradio UI, courtroom HTML/CSS, audio hooks, case preview book, and live event stream.
|
| - `sovereign_bench/engine.py` orchestrates trial phases, model calls, evidence events, jury votes, verdict assembly, and trace metadata.
|
| - `sovereign_bench/llm.py` builds role prompts, calls Hugging Face-compatible chat models, and rejects hidden reasoning or instruction echoes.
|
| - `sovereign_bench/cases.py` contains the cached demo case packets.
|
| - `modal_app.py` hosts the GPU-backed streaming endpoint used by the Space.
|
| - `tests/` contains engine, case, and rendering regression tests.
|
|
|
| The Gradio app uses `MODAL_TRIAL_URL` when set, otherwise it uses the built-in deployed Modal endpoint. The Modal app owns the Hugging Face token through a Modal secret named `huggingface`; no real credentials are committed.
|
|
|
| ## Run Locally
|
|
|
| ```powershell
|
| python -m pip install -r requirements.txt
|
| python app.py
|
| ```
|
|
|
| Open:
|
|
|
| ```text
|
| http://127.0.0.1:7860
|
| ```
|
|
|
| ## Deploy Modal Backend
|
|
|
| ```powershell
|
| python -m modal deploy modal_app.py
|
| ```
|
|
|
| After deployment, pre-warm every configured courtroom model in the deployed `sovereign-bench` app so the first trial does not wait for all GPU containers to cold start. Run this after each deploy because deployments reset Modal autoscaler overrides:
|
|
|
| ```powershell
|
| python -m modal run modal_app.py::warm_models
|
| ```
|
|
|
| If the endpoint changes, set the Hugging Face Space variable:
|
|
|
| ```text
|
| MODAL_TRIAL_URL=https://your-modal-endpoint.example
|
| ```
|
|
|
| ## Deploy Hugging Face Space
|
|
|
| Create or upload this repo as a Gradio Space inside the official Build Small org:
|
|
|
| ```text
|
| build-small-hackathon/<your-space-name>
|
| ```
|
|
|
| Space settings:
|
|
|
| - SDK: Gradio
|
| - App file: `app.py`
|
| - Python requirements: `requirements.txt`
|
| - Optional variable: `MODAL_TRIAL_URL`
|
| - No Space secret is required if using the hosted Modal endpoint.
|
|
|
| ## Verification
|
|
|
| ```powershell
|
| python -m pytest
|
| ```
|
|
|
| Focused checks used during final prep:
|
|
|
| ```powershell
|
| python -m pytest tests/test_engine.py tests/test_ui_rendering.py
|
| ```
|
|
|
| ## Limitations
|
|
|
| - Judge-GPT is not legal advice and should not be used for real legal decisions.
|
| - The demo packets are compact, staged evidence packets, not exhaustive source research.
|
| - Model, Modal, or retrieval failures stop the current trial instead of substituting fake dialogue.
|
| - Trial results are not persisted across sessions.
|
| - Custom trials require a short case context and evidence from both sides.
|
|
|
| ## Final Submission Checklist
|
|
|
| - [ ] Push the repo to the Build Small Hugging Face org as a Gradio Space.
|
| - [ ] Confirm the Space launches and can complete `Trial of Socrates`.
|
| - [ ] Record a short demo video showing the trial flow and verdict.
|
| - [ ] Replace the `Demo video` TODO above with the final public URL.
|
| - [ ] Publish one social post about the app.
|
| - [ ] Replace the `Social post` TODO above with the final public URL.
|
| - [ ] Run the README through the Build Small validator.
|
|
|