dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
Turn sensitive report snips into client-safe replicas. Sensitive text is masked on your device. Nothing is stored.
SecurityJavaScript · TypeScriptGitHub @karthikvalluri85OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Turn sensitive report snips into client-safe replicas
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Turn sensitive report snips into client-safe replicas.
Try it now: https://vaultsnip.pages.dev (no sign-up; the sample dashboards need no key)
Also on Hugging Face: https://huggingface.co/spaces/karthikvalluri/vaultsnip · Chrome and Edge store listings are in review.
VaultSnip takes a screenshot of any dashboard or report (BI tools, Excel, PDF report pages, product analytics, SaaS apps), masks sensitive text on your device, and builds a watermarked, interactive replica that runs on generated data. Nothing is stored.Read the full README ↗Turn sensitive report snips into client-safe replicas.
Try it now: https://vaultsnip.pages.dev (no sign-up; the sample dashboards need no key)
Also on Hugging Face: https://huggingface.co/spaces/karthikvalluri/vaultsnip · Chrome and Edge store listings are in review.
VaultSnip takes a screenshot of any dashboard or report (BI tools, Excel, PDF report pages, product analytics, SaaS apps), masks sensitive text on your device, and builds a watermarked, interactive replica that runs on generated data. Nothing is stored.
capture → local OCR → mask everything except an allowlist → independent re-scan gate
→ you approve the exact payload → Claude or OpenAI returns a layout spec (your key)
or VaultSnip reads it on your device (no key, beta)
→ synthetic replica (3 privacy modes) → one self-contained HTML export
https://github.com/user-attachments/assets/0df82dff-e0f8-49a3-b7a6-e36bdc1e8ddf
Snip → mask on your device → re-scan gate → approve the exact payload → interactive replica on synthetic data (click a country and every number changes).
| Area | Status |
|---|---|
| Samples first on screen 1 (no key needed) | ✅ 4 samples; the first runs the full redaction demo, the last is a paginated report |
| Upload, paste (on any screen, or with the Paste button), extension snip with crop | ✅ |
| Local OCR (Tesseract.js, WASM) | ✅ normal, inverted, high-contrast and block passes; implausible "words" from chart shapes are ignored |
| Mask by default, allowlist to keep | ✅ client names, IDs, emails and unlisted text are masked; numbers are replaced with invented values of the same size (or masked, if you prefer) |
| Blur text in charts on any page (extension) | ✅ right-click → "Blur text in charts on this page" or Alt+Shift+B: charts drawn on canvas (Power BI, Tableau, ECharts…) are read on your device and sensitive text is blurred in place; run again to remove |
| On-device name check (AI) | ✅ a 19 MB PII model in a Web Worker masks safe words used as names ("May Chen", "Delta Airlines"); only adds masks; can be switched off |
| Unread-text check (AI) | ✅ two small PP-OCRv5 models (5 MB and 7 MB) find every patch of text and read it again line by line, and mask any the reader missed or could not vouch for; only adds masks; can be switched off |
| Independent re-scan gate (Pass / Review / Blocked) | ✅ six independent re-reads of the masked image, plus one-click Hide everything uncertain |
| Review: click to toggle, drag to add masks | ✅ |
| Customer comments: keep the wording of verbatims, mask the names, emails and numbers inside them | ✅ opt-in; replicas quote only words that were readable in the approved image |
| Exact-payload preview before anything is sent | ✅ |
| Bring your own key: Claude (Anthropic) or OpenAI, direct browser call | ✅ key type detected automatically; "Check key" lists the models your key can use; held in memory unless you tick "remember" |
| Replica: KPI, bar, column (clustered, stacked, 100% stacked), line, area, combo, pie, donut, treemap, funnel, waterfall, scatter, bubble, heatmap, gauge, box plot, histogram, Sankey, Gantt/timeline, table, with reference lines | ✅ Apache ECharts 6; see the Supported charts page in the app |
| Build on this device (beta) | ✅ no key, nothing sent: panels, chart types (maps, combo, waterfall, gauge, funnel, Gantt and heatmap charts included), how series sit and reference lines, shapes, titles and tables read from the masked image in a Web Worker; checks each chart against the masked image; says how sure it is, and below 90% offers "Fix it here", "Use my AI key" or "Keep this result" |
No backend, no database, no accounts, no analytics. Images, OCR text and results live in the tab's memory. The only thing that ever leaves the device is the masked image you approved, sent straight to the AI provider you chose (Anthropic or OpenAI) with your own key, and only if you choose that over building the replica on your device. The browser stores only the OCR model (an app asset) and, if you choose, your key. See PRIVACY.md.
More in SUPPORT.md.
cd web
python3 -m http.server 8080 # or: npx serve .
Open http://localhost:8080 and click Try with sample dashboards. Opening index.html directly as a file won't work, because the OCR engine needs http.
./build.sh --bundle-models # model packed inside the extension (local testing and store uploads)
chrome://extensions (or edge://extensions) and switch on Developer mode.dist/extension.Use the same --bundle-models build for the Chrome Web Store and Edge Add-ons: the OCR model ships inside the extension (about 7 MB zipped), so it works offline and makes no network request until you send an approved image to your AI provider. Tagged releases attach ready-made packages automatically.
web. Every push to main deploys.dist/hf-space (README.md and a page that shows the live web app), so it always runs the latest release. Live at https://huggingface.co/spaces/karthikvalluri/vaultsnip../build.sh --bundle-models, then upload dist/vaultsnip-extension.zip; privacy disclosures in PRIVACY.md.web/ the app (static, no build step), published as-is
index.html screens and styles
app.js pipeline: OCR, masking, gate, review, AI call, export
llm.js AI providers (Claude, OpenAI): the only code that calls an AI service
replica.js replica engine, also inlined into every export
feedback.js in-app feedback and error reporting
samples.js bundled fictional samples
maps/ map outlines (Natural Earth, simplified)
lib/ lang/ tesseract.js + OCR model, echarts, vs-context.js (on-device AI client)
ml/ models/ on-device AI: Web Worker + ONNX runtime (npm run build:ml), PII and text-region models (npm run fetch:model)
extension/ manifest.json; background.js, canvas-ocr.js, offscreen.*, wasm/ built from src/ (npm run build:ext)
src/ TypeScript sources: name check, chart blur (background/, content/), exports (export/, exporters/), realistic names (replica/)
tools/ check.mjs, e2e.mjs, build-ml.mjs, fetch-model.mjs, maps/build_maps.py
build.sh builds dist/web, dist/extension, dist/hf-space and zips
Contributions are welcome. Please read CONTRIBUTING.md and the code of conduct. In short: no real data anywhere, no new data flows, and npm run check plus npm run e2e must pass. Changes are listed in CHANGELOG.md. How accuracy is measured, today's figures and the plan for raising them are in ACCURACY.md.
Apache License 2.0 © 2026 Karthik Valluri. Third-party components are listed in THIRD_PARTY_NOTICES.md.
| Paginated reports (SSRS, Crystal, BusinessObjects) | ✅ matrix / cross-tab with grouped headers, subtotals and grand totals; grouped tables with subtotals; report parameters; in every export and share link |
| Maps: filled, bubble, density and flow | ✅ world, Europe and 14 countries; names, ISO/postal codes and groups (Nordics, DACH, EMEA…) match |
| Cross-filtering | ✅ chips, chart clicks, map regions and table rows change every number |
| Privacy modes: Shape-preserving, Structure-only, Generic | ✅ |
| Realistic names | ✅ made-up people, companies, emails, IDs and places that fit each column and each row's country (Faker); organisations named in the dashboard's industry style (a hospital as "… Health System", a payer as "… Health Plan"); seeded, switchable, never in Generic mode; emails only at example.com/.net/.org |
Watermark + synthetic banner + synthetic-data meta | ✅ cannot be turned off |
| Export: one offline HTML file | ✅ no network calls; carries only what its mode shows |
| Export for Figma (SVG) | ✅ one layered SVG: editable text, vector charts, watermark drawn in; opens in Figma, Penpot, Illustrator |
| Export React code: editable TypeScript | ✅ typed .tsx project, one component per card in the page's order and widths; values, filters, search and CSV stay live via DSCReplica.model(); no AI, no network |
| Export React code | ✅ zip with a live React component running the replica engine: values, charts, filters and CSV generated at runtime from its spec and seed prop |
| Mask-only download (no key) | ✅ masked PNG for forums, bug reports and slides, or Copy masked image to paste it anywhere |
| Safe-to-share receipt | ✅ PNG or PDF beside the masked image: what was hidden (counts and kinds, never the text), the check, made on this device, and the image's SHA-256 |
| Copy image of the replica | ✅ a sharp picture with generated values only, for chats, tickets and slides |
| Share links | ✅ the replica lives in the link itself; the sharer picks Shape, Structure or Generic and the receiver cannot unlock more |
| Synthetic data download | ✅ tidy CSV of every generated data point, for Excel, Power BI, Tableau, Looker Studio |
Chrome/Edge extension (MV3, activeTab only) | ✅ model downloaded on first launch, cached in IndexedDB |
| In-app feedback with a private route for masking misses | ✅ |
| Pixel-measured shapes | ✅ in "Build on this device": bar lengths, line heights, slice shares and dot positions measured from the masked image |
| PDF/PPTX input | ⏳ planned |