Add hackathon submission tags + idea/how-built/tech + submission link slots

#1
by gr33r - opened
Files changed (1) hide show
  1. README.md +49 -4
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 version.
 
19
 
20
- Built for the Hugging Face **Build Small** hackathon — small models, big adventure.
21
 
22
- - Model: [`gr33r/ux-writing-1`](https://huggingface.co/gr33r/ux-writing-1)
23
- - Code: [`content-designer/ux-writing-1`](https://github.com/content-designer/ux-writing-1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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`.