Selected projects

Things we've built.

Chatbot-SaaS — a sellable customer-support chatbot for small businesses

A ready SaaS product a small business can add with a single script tag: a floating chat widget that answers customers based on the business's own information, powered by Claude. In fact, the chat bubble in the corner of this very page is this project — try it out!

Features

  • Embeddable widget with one <script> line — no dependencies, no build step, works on any site.
  • Multi-tenant architecture: one backend serves every customer, each with their own API key and system prompt.
  • A dashboard where customers edit the bot's instructions (hours, prices, FAQs) and grab their embed code without touching code.
  • Stripe integration: checkout and webhooks that automatically activate or cancel a subscription based on payment status.
  • 14-day free trial and per-customer message limits, checked before every bot response.
  • Conversation history persists for the session, so the bot remembers context between messages.
Node.js / Express Claude API (Anthropic) SQLite Stripe Vanilla JS widget

PrivacyPulse — a privacy report card for your phone's apps

Most people install dozens of apps without knowing what they actually do in the background: what permissions they use, whether they contain tracking tools, and where they send network traffic. PrivacyPulse makes this visible in plain language — and lets the user actively block suspicious traffic, not just observe it.

Features

  • A privacy score for every app: permission analysis and detection of known ad/analytics SDKs are distilled into a single 0–100 score and a plain-language risk level.
  • Local VPN-based traffic monitoring — a hand-written lightweight TCP/IP NAT implementation acts as the phone's own VPN service, presents itself to other apps as the "server" while actually forwarding traffic onward, and extracts destination addresses from TLS connections without decrypting them.
  • Fully offline country detection — the destination's registered country is looked up from a local database of about 355,000 IP ranges, not an external service.
  • Active country blocking, not just alerts — selected countries (e.g. China or Russia) are blocked the moment a new connection is attempted, instead of just flagging the traffic as suspicious afterward.
  • Persistent traffic history for every app, filterable by destination country or traffic type (advertising, analytics, social…).
  • Google Play Billing subscription integration for Premium features (filters, alerts, country summaries and country blocking), with its own confirmation screen before purchase.
  • Four clear tabs — Apps, Monitoring, History and Settings — each explaining directly in the UI what it does and why.
  • All analysis happens entirely on-device — no backend server, no data sent to third parties, and Android's own backup is deliberately disabled.
Kotlin VPNService / TCP/IP TLS SNI analysis Offline IP geolocation Google Play Billing

PokeBotti — automated stock watcher for online stores

Hunting limited-run and fast-selling items (like trading cards) usually means manually refreshing dozens of browser tabs. PokeBotti solves this: it watches any store's product page in the background and sends a Discord notification the moment an item becomes available — no manual checking required.

Features

  • Two tracking modes: precise stock-status monitoring for an existing product page, and a "watch" mode that alerts as soon as a new, not-yet-published product appears on a store's category or search page.
  • Two detection methods per product — simple keyword search in the page text, or a more precise CSS-selector-based read (including using stores' JSON-LD metadata for extra reliability).
  • Discord webhook integration, with per-product webhooks for routing alerts to different channels.
  • Desktop app (Tkinter UI) that can also run minimized to the system tray in the background.
  • Real-time connection indicator for every tracked page, plus automatic reconnection if the internet connection drops.
  • All settings (check interval, notification method, etc.) editable directly from the UI.
  • Packaged as a single standalone .exe for Windows — no Python install required for end users.
Python Tkinter requests BeautifulSoup PyInstaller

m-node social-bot — an AI social media assistant

Social media upkeep is easy to skip when there's no time or interest in writing the posts. This bot does the thinking for us: it looks at real photos of our work and writes an Instagram caption and hashtags for them — all that's left is to copy and publish.

Features

  • Looks at the photo (using Claude's vision) and writes a caption and hashtags in the company's own brand voice.
  • Two parallel interfaces: a Discord bot that sends suggestions straight to chat with approval buttons, and a browser dashboard for browsing the whole content queue at once.
  • The content queue notices new photos on its own — just drop a file in the folder, no manual entry needed.
  • A "New version" button generates an alternative caption for the same photo in seconds if the first suggestion misses the mark.
  • A ready-made Instagram Graph API integration for direct publishing (the newer "Instagram API with Instagram Login" flow, no Facebook Page required) — switchable on the moment the credentials are in place.
  • A scheduled suggestion rhythm keeps the posting cadence going without anyone having to remember it.
Node.js / Express Claude API (vision) Discord.js Instagram Graph API node-cron