projects — pradyb

Prady

Full applications and developer tooling, built end to end: backend, on-device AI, native clients, CLIs, and the infrastructure that ships them.

01

Shipped products

Private codebases — full source stays closed, the working software doesn't.

VaultMint

Privacy-first personal finance app for Indian users. Extracts transactions from bank SMS and PDF statements using an LLM pipeline that runs entirely on-device via Ollama — no statement data ever leaves the machine, and every field is AES-256-GCM encrypted with per-user keys underneath.

10+banks · SMS parsing
80+banks · IFSC lookup
100+UPI handles recognised
200+MCC merchant categories
Core ledger
AI-parsed SMS & PDF statements, reason-grouped review queue with bulk confirm/reject, merchant-alias learning, self-improving categorisation, free-form tags, per-category budgets with rollover and 80%/100% over-budget alerts.
Automatic capture
iOS Shortcut drops bank SMS straight into the on-device pipeline — no Apple API, nothing over the network. IMAP inbox polling extracts statement PDFs and unlocks password-protected ones from data already on file.
Insight & recurring
Deterministic recurring-transaction detection with next-charge prediction, cashflow trend and net-position tiles, credit-card fee-waiver progress, rewards summary, MoM category deltas.
India-specific
IFSC-based bank identification, UPI PSP recognition, ISO 18245 MCC mapping, India-only categories (Jewellery/Gold, Government, Religion/Charity), statement balance reconciliation to the rupee.
Stack — Java 21 · Spring Boot 4 · Spring AI · PostgreSQL · Redis 8 (cache + vector search) · Docling · SeaweedFS · Next.js 16 PWA
Smart Contacts Hub

A native macOS app for organizing, analyzing, and reconciling contacts across three ecosystems at once. Built on Clean Architecture with a strict MVVM split between domain, data, and presentation layers — no ViewModel doing double duty as a data mapper.

Manage
Every contact in one place, filterable by company or by what's missing — no more spotting gaps by scrolling.
Reconcile
Compares and syncs across Google · Microsoft · LinkedIn, with duplicate detection before anything merges.
Understand
Built-in stats and insights across the whole contact base, plus upcoming events tied to specific people.
Take it with you
Export on demand, dashboard and settings tuned to how you actually work the list.
Stack — Swift · SwiftUI · Clean Architecture / MVVM
02

Open source

Public repos — source, issues, and releases on GitHub.

sgh-cli

GitHub's own gh is repository-scoped by design. sgh is the other axis: every command takes an organization and fans out across all of its repositories concurrently — cut a release branch in 200 repos, review every open PR your team filed this week, or find which repos still have branch protection disabled, in one command instead of a shell loop over the API.

Bulk git operations
Branches, tags, and pull requests — create, rename, delete, review, merge, close — across every repo at once, plus an interactive selector.
CI & compliance
List, view, rerun, cancel and dispatch Actions workflow runs with live monitoring; inspect and update branch-protection rules org-wide.
Built for scale
Concurrent worker pool, rate-limit tracking, exponential backoff, circuit breaking — and --dry-run on everything destructive, because a bulk operation across an org is one flag away from a bulk incident.
Scriptable
Table, compact, or JSON output; shell completion for Bash/Zsh/Fish/PowerShell; an interactive TUI dashboard when you'd rather browse.
Stack — Go
zsh-history-cleaner

Zero-dependency Go CLI that cleans up ~/.zsh_history: deduplicates, strips typo'd commands (edit-distance match against known programs), drops noise below a length threshold, and can re-sort extended-history entries by timestamp. Always writes a timestamped backup before touching the file.

Stack — Go
herdr-which-key

A Neovim-style which-key popup for herdr, the terminal workspace manager for AI coding agents. Press one leader key, see every next key with a label, drill into groups, and run the action — split a pane, switch workspace, spin up a git worktree — without memorising a single chord.

A tree you design
Groups nest to any depth in a keys.toml; every leaf runs any herdr command or shell command. Ship the defaults, or override them from the plugin's config directory.
More than shortcuts
Text prompts, workspace/tab/agent pickers, and hydra-style repeat — resizing a pane is p R, then tap h j k l as often as you like.
Finds your other plugins
Every installed herdr plugin's panes and actions appear automatically under P, discovered when the menu opens — nothing to configure.
Stack — Python (standard library only)
herdr-notify-router

Rules for herdr agent notifications: decide when an alert is worth sending and where it goes, instead of forwarding every status change to one channel. An agent going idle for a second doesn't need a ping — one still blocked five minutes later does.

Rules, not a firehose
Alert only if an agent stays blocked for N seconds, skip the pane you're already watching, set quiet hours, and never repeat the same alert within a dedupe window.
Send it anywhere
Webhook (Slack, Discord, or your own JSON endpoint), ntfy, or a native desktop notification — including a custom app icon on macOS.
Shared policy, private channels
Commit a .herdr/notify.toml so a team agrees on what's worth alerting on, while each person's own sinks and quiet hours stay in their personal config.
Stack — Python (standard library only)
claude-mods

A marketplace of small mods for Claude Code — plugins that run inside it and change how it behaves. Add the marketplace once, then install only the mods you want. Three so far: two guardrails and an alert router.

Guardrails
safety-guard blocks rm -rf /, force pushes, git reset --hard, curl | sh and access to secret files; secret-scrub masks API keys, GitHub and GitLab tokens and private keys in your prompt before they reach the model.
Alerts worth getting
notify-router tells you when a turn is done, when Claude has been waiting on you for N seconds, or when the context window or a rate limit crosses a threshold — to a chime, a macOS notification, or ntfy on your phone, with quiet hours and dedupe.
Inspect before you install
A mod runs with your permissions, so each one is small, tested in CI, and open to claude plugin validate, which lists the events it handles and the calls it makes before you run it.
Stack — TypeScript (no dependencies)
quorumdeck

A terminal console for running several AI agents — different models, different providers — side by side in one session. Most CLI clients give you one model and a dropdown to switch; quorumdeck starts from the opposite premise, that the useful thing is what happens when a Claude agent, a GPT agent, and a local Llama agent answer the same question at once, with tokens, latency, and cost shown next to each other so "which model for this" stops being a vibe.

5orchestration patterns
100+model backends via LiteLLM
Patterns
single · fanout · judge · debate · pipeline — same prompt run one, several, or staged ways, all working end to end.
Agents as config
A deck is a YAML file committed next to the code it's about — share a deck, not a screenshot. Credentials stay in the OS keychain, never in agents.yaml.
Cost control
Per-agent token/cost/wall-clock shown live; an optional hard budget_usd refuses the next turn once a deck's running total hits it.
Runs anywhere
Fully local decks against Ollama with no key and no network, or free multi-lab comparisons on OpenRouter's free tier with one key.
Stack — Python · LiteLLM
03

Environment

Personal dev environment, managed as code on both platforms I work from — private, no source browsing.

dotfiles

macOS setup — shell (zsh), editor, and tool configuration, bootstrapped from a single script on a fresh machine.

windots

The same discipline on Windows, built around Nushell rather than a POSIX shell — kept in parallel with the macOS setup so either machine gets to a working state in minutes.