Spaces:
Running on Zero
Running on Zero
| title: NeuroBait | |
| colorFrom: green | |
| colorTo: blue | |
| sdk: gradio | |
| app_file: app.py | |
| pinned: true | |
| license: apache-2.0 | |
| short_description: An ADHD-friendly space and gentle boost for your everyday. | |
| tags: | |
| - track:backyard | |
| - sponsor:openai | |
| - sponsor:modal | |
| - achievement:offgrid | |
| - achievement:welltuned | |
| - achievement:offbrand | |
| - achievement:sharing | |
| - achievement:fieldnotes | |
| <p align="center"> | |
| <img src="assets/neurobait-logo.jpg" alt="NeuroBait logo" width="420" /> | |
| </p> | |
| # 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 started from a simple observation: sometimes the hard part is not knowing | |
| what to do. The hard part is crossing the gap between knowing and starting. A | |
| to-do list can be technically correct and still feel like one more thing to | |
| carry. NeuroBait is built for that freeze moment. | |
| Instead of giving a productivity lecture, NeuroBait tries to offer a small | |
| spark: short, warm, agency-preserving language that reconnects the user with | |
| what matters and lowers the first move until it feels possible. No shame, no | |
| streak pressure, no diagnostic framing, and no visible prompt labels like | |
| `Micro-action`, `Hook`, or `Stakes`. | |
| This Space runs a fine-tuned model through the app itself. It does not call an | |
| external hosted LLM API for chat responses. | |
| ## Try It | |
| - Live Space: https://huggingface.co/spaces/build-small-hackathon/NeuroBait | |
| - Direct app host: https://build-small-hackathon-neurobait.hf.space | |
| - Demo video: https://www.youtube.com/watch?v=-EJ06hOgyd0 | |
| - Social post: https://x.com/hd_subrata/status/2066448521881059735 | |
| - Field Notes: https://huggingface.co/blog/build-small-hackathon/neurobait-adhd | |
| - Model adapter: https://huggingface.co/build-small-hackathon/NeuroBait | |
| - Source repo: https://github.com/Subrata15/NeuroBait-Build-Small-Model | |
| ## Sample Chat | |
| <p align="center"> | |
| <img src="assets/example-chat.png" alt="Example NeuroBait chat screenshot" width="760" /> | |
| </p> | |
| ## Build Small Hackathon Submission | |
| - Primary track: **Backyard AI** | |
| - Why this track: NeuroBait was built from a real household problem and a real | |
| daily friction - the moment when a person already knows the task matters but | |
| still cannot begin. | |
| - 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, | |
| product copy, mood input, and a NeuroBait-specific chat experience 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 NeuroBait Does | |
| The app is intentionally narrow. NeuroBait does not try to become a therapist, | |
| planner, diagnosis tool, or productivity operating system. It is designed for | |
| one useful behavior: helping a stuck person find a lighter first move. | |
| 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. | |
| ## Why Fine-Tune? | |
| The base model is capable, but capability alone was not the target. Out of the | |
| box, a model often responds with helpful-looking structure: long paragraphs, | |
| bold labels, bullet lists, and generic encouragement. For someone already | |
| overwhelmed, that can become another wall of text. | |
| The fine-tune was trained to learn NeuroBait's voice and behavior layer: | |
| shorter responses, warmer framing, fewer assumptions, and no leaked internal | |
| recipe labels. The goal was not to make a general assistant. The goal was to | |
| make the first sentence feel less heavy. | |
| ## 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. | |
| Expected runtime 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 | |
| ## Community Attention | |
| After publication, NeuroBait drew organic attention from both AI community | |
| accounts and real users who reposted or shared the project: | |
| - LinkedIn: https://www.linkedin.com/feed/update/urn:li:activity:7470126428928319488/ | |
| - Instagram: https://www.instagram.com/p/DZZw6UKAj0N/?img_index=1 | |
| - LinkedIn: https://www.linkedin.com/feed/update/urn:li:activity:7470052176942415872/ | |
| - LinkedIn: https://www.linkedin.com/feed/update/urn:li:activity:7470087187074572288/ | |
| - X: https://x.com/AiquestAcademy/status/2064301066733101313 | |
| - X: https://x.com/Jorgebanuelosmx/status/2064317026664059034 | |
| - X: https://x.com/amphetamarina/status/2064322048659279917 | |
| ## 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. | |