| --- |
| 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. |
|
|