Add hackathon submission tags + idea/how-built/tech + submission link slots
#1
by gr33r - opened
README.md
CHANGED
|
@@ -9,18 +9,63 @@ app_file: app.py
|
|
| 9 |
pinned: false
|
| 10 |
license: apache-2.0
|
| 11 |
short_description: UX writing arena — base model vs fine-tune. You judge.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
---
|
| 13 |
|
| 14 |
# ⛺ Copy Campfire — the UX writing arena
|
| 15 |
|
| 16 |
Two UX writers by the fire — one went to training camp. Paste your UI copy, get two
|
| 17 |
blind rewrites (base **Qwen3.6-27B** vs the **ux-writing-1** QLoRA fine-tune), vote,
|
| 18 |
-
then see the reveal. Votes are stored privately as preference data that trains the next
|
|
|
|
| 19 |
|
| 20 |
-
|
| 21 |
|
| 22 |
-
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
**Space secrets required:** `BATTLE_URL`, `AUTH_TOKEN` (Modal backend), `HF_TOKEN`
|
| 26 |
(write access for vote storage); optional `VOTES_DATASET`.
|
|
|
|
| 9 |
pinned: false
|
| 10 |
license: apache-2.0
|
| 11 |
short_description: UX writing arena — base model vs fine-tune. You judge.
|
| 12 |
+
tags:
|
| 13 |
+
- backyard-ai
|
| 14 |
+
- best-demo
|
| 15 |
+
- tiny-titan
|
| 16 |
+
- judges-wildcard
|
| 17 |
+
- modal
|
| 18 |
---
|
| 19 |
|
| 20 |
# ⛺ Copy Campfire — the UX writing arena
|
| 21 |
|
| 22 |
Two UX writers by the fire — one went to training camp. Paste your UI copy, get two
|
| 23 |
blind rewrites (base **Qwen3.6-27B** vs the **ux-writing-1** QLoRA fine-tune), vote,
|
| 24 |
+
then see the reveal. Votes are stored privately as preference data that trains the next
|
| 25 |
+
version — the arena is the data flywheel.
|
| 26 |
|
| 27 |
+
## The idea
|
| 28 |
|
| 29 |
+
Every product ships copy debt — "Invalid", "OK", "An error occurred while processing
|
| 30 |
+
your request" — thousands of interface strings nobody owns. **ux-writing-1** is a small,
|
| 31 |
+
open model fine-tuned to review that copy the way a senior UX writer would: rewrite
|
| 32 |
+
what's weak, **keep what's already right**, and say why. It runs at codebase scale for
|
| 33 |
+
cents, on hardware you control — exactly the kind of bulk, structured LLM work that
|
| 34 |
+
shouldn't be metered at frontier prices.
|
| 35 |
+
|
| 36 |
+
## How it was built
|
| 37 |
+
|
| 38 |
+
- **Base:** [Qwen3.6-27B](https://huggingface.co/Qwen/Qwen3.6-27B) — Apache-2.0, 27.8B
|
| 39 |
+
params (under the 32B limit).
|
| 40 |
+
- **Training:** QLoRA on ~1,400 hand-built before/after pairs, each with a
|
| 41 |
+
`{rewrite, reason, risk}` contract and the code context the string lives in. Two runs,
|
| 42 |
+
≈$30 of GPU on **Modal**.
|
| 43 |
+
- **Serving:** Modal OpenAI-compatible endpoint; this Gradio arena calls it live.
|
| 44 |
+
- **Honest eval:** 83% blinded human preference vs the base model (90 held-out items) —
|
| 45 |
+
not automated heuristics, which saturated.
|
| 46 |
+
- **At codebase scale:** reviewed 10,000 of PostHog's UI strings in 77 min for **$3.22**
|
| 47 |
+
— changed 994, **kept 9,006** as-is. Restraint is trained, not hoped for.
|
| 48 |
+
|
| 49 |
+
## Tech
|
| 50 |
+
|
| 51 |
+
Qwen3.6-27B · QLoRA (PEFT / TRL) · Modal (training + serving) · Gradio (this arena) ·
|
| 52 |
+
llama.cpp / GGUF (zero-cost laptop inference) · Hugging Face Hub (model, adapter,
|
| 53 |
+
dataset, blinded vote store).
|
| 54 |
+
|
| 55 |
+
## Take it home
|
| 56 |
+
|
| 57 |
+
- **Model:** [`gr33r/ux-writing-1`](https://huggingface.co/gr33r/ux-writing-1) ·
|
| 58 |
+
[adapter](https://huggingface.co/gr33r/ux-writing-1-lora) ·
|
| 59 |
+
[GGUF](https://huggingface.co/gr33r/ux-writing-1-GGUF)
|
| 60 |
+
- **Code & eval tooling:** [`content-designer/ux-writing-1`](https://github.com/content-designer/ux-writing-1)
|
| 61 |
+
- **Interactive figures:** [the campfire gallery](https://copy-campfire-gallery.vercel.app)
|
| 62 |
+
|
| 63 |
+
## Submission
|
| 64 |
+
|
| 65 |
+
- 🎬 **Demo video:** _add the public video link here before submitting_
|
| 66 |
+
- 📣 **Social post:** _add the social post link here before submitting_
|
| 67 |
+
|
| 68 |
+
---
|
| 69 |
|
| 70 |
**Space secrets required:** `BATTLE_URL`, `AUTH_TOKEN` (Modal backend), `HF_TOKEN`
|
| 71 |
(write access for vote storage); optional `VOTES_DATASET`.
|