Spaces:
Sleeping
Sleeping
| title: NeuroBait | |
| colorFrom: green | |
| colorTo: blue | |
| sdk: gradio | |
| app_file: app.py | |
| pinned: false | |
| license: apache-2.0 | |
| short_description: An ADHD-friendly space and gentle boost for your everyday. | |
| # NeuroBait | |
| NeuroBait is an ADHD-friendly companion for task initiation: a warm space and a | |
| gentle boost for the moment when starting feels heavier than the task itself. | |
| It is built for a very specific moment: the user already knows the task matters, | |
| but the first move still feels too heavy. Instead of turning that friction into | |
| a productivity lecture, NeuroBait replies with short, warm, agency-preserving | |
| language. It avoids shame, streak pressure, diagnostic framing, and visible | |
| prompt labels such as `Micro-action`, `Hook`, or `Stakes`. | |
| This Space runs a fine-tuned small model through the app itself. It does not call | |
| an external hosted LLM API for the chat response. | |
| ## Build Small Hackathon Submission | |
| - Primary track: **Backyard AI** | |
| - Why this track: NeuroBait focuses on a real everyday ADHD and | |
| neurodivergent friction - starting the thing that already matters - and turns a | |
| small model into a practical companion for that moment. | |
| - Bonus quest fit: **Well-Tuned**, because the Space uses a published LoRA | |
| adapter fine-tuned for NeuroBait's voice and behavior. | |
| - Bonus quest fit: **Off-Brand**, because the app uses custom Gradio styling and | |
| product copy instead of the default chatbot shell. | |
| - Sponsor fit: **Modal-powered**, because fine-tuning and generation evaluation | |
| were run on Modal GPU infrastructure. | |
| NeuroBait was fine-tuned with Modal and deployed as a Gradio app on Hugging Face | |
| ZeroGPU. | |
| ## What The App Does | |
| The app is intentionally narrow. NeuroBait should: | |
| - respond in concise, natural prose, | |
| - preserve the user's agency, | |
| - avoid guilt framing and productivity shame, | |
| - ask one light question when context is sparse, | |
| - offer one tiny concrete action when enough context exists, | |
| - keep the tone gentle without pretending to be a therapist. | |
| The interface includes a small mood check-in so the same model can adapt its | |
| response style slightly: | |
| - Calm | |
| - Tired | |
| - Anxious | |
| - Focused | |
| The mood input does not change the safety scope. It only nudges the app-level | |
| prompting and presentation. | |
| ## Model And Runtime | |
| - Base model: `unsloth/gemma-3-12b-it` | |
| - Adapter: `build-small-hackathon/NeuroBait` | |
| - Method: 16-bit LoRA via Unsloth | |
| - Training hardware: Modal H100 80GB GPU | |
| - Space runtime: `transformers` + `peft` | |
| - Quantization: 4-bit bitsandbytes NF4 inside the `@spaces.GPU` window | |
| Unsloth is used for training, not for Space inference. The deployed app uses the | |
| standard `transformers` + `peft` path so the public demo can load the Gemma 3 12B | |
| base model plus the NeuroBait LoRA adapter on Hugging Face ZeroGPU. | |
| ## Runtime Configuration | |
| Expected environment variables: | |
| ```text | |
| BASE_MODEL=unsloth/gemma-3-12b-it | |
| ADAPTER_ID=build-small-hackathon/NeuroBait | |
| LOAD_IN_4BIT=1 | |
| MAX_NEW_TOKENS=220 | |
| PREWARM=1 | |
| ``` | |
| Weights are pre-warmed to the Space cache on CPU at import so the GPU window can | |
| focus on quantized loading and generation. | |
| ## Training And Evaluation Summary | |
| Run #4 used a small bilingual Indonesian/English conversational dataset: | |
| - Train conversations: 270 | |
| - Eval conversations: 30 | |
| - Training steps: 102 | |
| - Train loss: 1.7501 | |
| - Eval loss: 1.8844 | |
| The loss is only a weak diagnostic for this project. The main target is behavior: | |
| shorter responses, warmer task-initiation support, and fewer leaked internal | |
| structure labels. | |
| Generation eval over 8 held-out or novel prompts: | |
| - Base persona average: 2.25 / 4 | |
| - Fine-tuned persona average: 4.0 / 4 | |
| - Base average words: 80.4 | |
| - Fine-tuned average words: 55.1 | |
| - Base label leaks: 5 | |
| - Fine-tuned label leaks: 0 | |
| ## Related Repos | |
| - Model adapter: https://huggingface.co/build-small-hackathon/NeuroBait | |
| - Codex trace dataset: https://huggingface.co/datasets/build-small-hackathon/NeuroBait-Codex-Traces | |
| - Source repo: https://github.com/Subrata15/NeuroBait-Build-Small-Model | |
| ## Safety Scope | |
| NeuroBait is not a medical device, diagnostic tool, therapist, emergency support | |
| system, or replacement for professional care. It is a small-model demo for | |
| gentle task-initiation support. | |