Spaces:
Running
Running
| title: BugLens | |
| emoji: π | |
| colorFrom: gray | |
| colorTo: yellow | |
| sdk: gradio | |
| sdk_version: 6.17.3 | |
| python_version: "3.12" | |
| app_file: app.py | |
| pinned: false | |
| license: apache-2.0 | |
| short_description: Turn a bug screenshot into an honest, Jira-ready report. | |
| tags: | |
| - build-small-hackathon | |
| - backyard-ai | |
| - tiny-titan | |
| - off-brand | |
| - minicpm-v | |
| - openbmb | |
| - modal | |
| - codex | |
| # BugLens | |
| BugLens turns a bug screenshot and a one-line tester note into a Jira-ready bug report, a missing-info checklist, regression tests, and edge-case notes β using a ~1.3B vision model that stays honest about what it cannot see. | |
| **Build Small Hackathon** Β· Track: π‘ Backyard AI Β· Model: [`openbmb/MiniCPM-V-4.6`](https://huggingface.co/openbmb/MiniCPM-V-4.6) (~1.3B) | |
| - π₯ Demo video: _coming soon_ | |
| - π£ Social post: _coming soon_ | |
| ## The idea | |
| QA testers spend real time turning screenshots into structured tickets. BugLens does it in one read β and its differentiator is **honesty**: a small model that refuses to invent context it cannot perceive (browser, OS, device, user role, environment, backend state) and instead hands you a "confirm before filing" checklist. | |
| ## How it works (technical approach) | |
| - **Frontend:** a custom React UI served via `gradio.Server` (FastAPI + Gradio's API engine) β deliberately beyond stock Gradio (**Off-Brand**). | |
| - **Contract:** one validated Pydantic `BugReport` flows through the whole app and serializes to the exact JSON the UI renders into four cards. | |
| - **Pipeline (two calls):** screenshot β factual UI observation (vision) β strict-JSON structuring β Pydantic validation β cards + Jira / GitHub / CSV exports. | |
| - **Model:** `openbmb/MiniCPM-V-4.6` (~1.3B, SigLIP2-400M + Qwen3.5-0.8B) β image-native and strong at OCR / UI reading (**Tiny Titan**, **OpenBMB**). | |
| - **Inference backend:** a Modal GPU endpoint the Space calls over HTTPS (**Modal**); a mock mode keeps the UI fully runnable during development. | |
| ## Run it locally | |
| See [`UV.md`](UV.md) for details. | |
| ```bash | |
| uv sync --extra dev | |
| uv run pytest # contract, render, and endpoint tests | |
| uv run python app.py # serves BugLens on http://localhost:7860 | |
| ``` | |
| ## Verified stack | |
| - Python `>=3.11`, package manager: `uv` | |
| - Gradio `6.17.3` Β· Pydantic `2.13.4` Β· Pillow `12.2.0` Β· Requests `2.34.2` | |
| - Modal backend: Modal `1.4.3` + Transformers `5.10.2` (install with `av` instead of `torchcodec` to avoid CUDA conflicts) | |
| ## Plans | |
| - [`01_research_verified_stack.md`](docs/plans/01_research_verified_stack.md) | |
| - [`02_step_by_step_execution_plan.md`](docs/plans/02_step_by_step_execution_plan.md) | |
| - [`03_architecture_flows.md`](docs/plans/03_architecture_flows.md) | |
| - [`04_prompt_schema_quality_plan.md`](docs/plans/04_prompt_schema_quality_plan.md) | |
| - [`05_submission_readme_demo_social.md`](docs/plans/05_submission_readme_demo_social.md) | |
| ## Contribution strategy | |
| Codex contribution is part of the submission strategy. See [`docs/CONTRIBUTION_STRATEGY.md`](docs/CONTRIBUTION_STRATEGY.md). | |