Automation lab

Small tools that do the boring work.

CloudFlowLab is where I build and run the software my day actually needs - Telegram bots that answer questions off a spreadsheet, dashboards that watch a portfolio, and browser tools that replace a stack of paperwork. Three of them run right here, free - nothing to install, nothing uploaded.

3 tools live in your browser 6 more run privately No accounts, no cookies

A lookup that used to take an afternoon

Projects

What is built, and where it runs

Three do all their work inside your browser, so they live here on the domain and your files never leave the machine. The rest are kept private - they hold real operational data, need a desktop, or are simply not published.

Live

AHK Menu Generator

Builds an AutoHotkey launcher menu from a form. Add the apps and folders you want, drag them into the order you like, pick a hotkey, and it writes valid AHK v1 script for you to download and run.

No install, no backend - the script is generated in the page and saved straight to your machine.

  • Drag entries into the order you want them
  • Hotkey presets, or full custom AHK syntax
  • Save and reload configs as JSON
  • React
  • Vite
  • AHK v1
  • Drag & drop
Use it now
Live

WhatsApp Chat Viewer

Drop in an exported chat and read it back the way it looked - bubbles, timestamps, photos, videos and voice notes. Takes the plain .txt export or the full .zip. Parsed entirely in the page; nothing is uploaded.

  • HTML
  • Zip parsing
  • Offline
Open viewer
Live

Contacts Viewer

Turns a .vcf export into a browsable contacts app - photos, numbers, emails, search, and CSV export. Reads vCard 2.1, 3.0 and 4.0, quoted-printable accents included, from one contact to ten thousand. Also local-only.

  • HTML
  • vCard 2.1-4.0
  • CSV export
Open viewer
Private

GST Invoice Generator

A complete GST invoice desk in a single page. Fill the form, watch a true A4 preview build alongside it, then print or save to PDF. Draw a round rubber stamp or upload a seal and signature and place them to the pixel, with the profile and every past invoice kept in the browser for next time.

  • HTML
  • Zero dependencies
  • localStorage
  • Print to A4
Self-hosted

Spreadsheet Search Bot

A Telegram bot that turns a large spreadsheet into instant answers. Send it the file, it indexes every column into SQLite, then replies to whatever you type - a reference number, a date or a keyword, in any format.

  • Python
  • SQLite
  • Telegram Bot API
Self-hosted

Travel Expense Bot

A shared ledger for a team on the road. Records who paid and who benefited, works out who owes whom, tracks settlements, and posts daily, weekly and monthly Excel summaries to the group. Nothing is ever hard-deleted - every change is audited.

  • Python
  • SQLite
  • Scheduled reports
Self-hosted

Portfolio Dashboard

One screen for holdings spread across brokers, mutual funds and digital metal. Prices come from free public feeds, positions live in a local database, and no broker account is ever linked - it reads nothing it was not given.

  • Next.js
  • SQLite
  • Public price feeds
In build

AI Research Agent

A stateful agent that plans a research question, searches, reads the sources it finds, pulls out typed evidence, checks its own coverage, and writes a report where every claim carries a citation.

  • FastAPI
  • SQLAlchemy
  • State machine
Desktop app

PhonePe Statement Converter

Drops a year of PhonePe transaction statements in and gets an organised Excel workbook out - one row per transaction, plus monthly, category and counterparty summaries across five sheets. A 374-page statement, roughly 3,000 transactions, takes about nine seconds. Runs as a desktop window you drag PDFs onto, so it is not a browser tool - porting it to run here is a job of its own.

  • Python
  • Tkinter
  • openpyxl
  • 5-sheet output

How it works

A spreadsheet becomes a question you can ask

The same shape underlies most of what is on this page: take the file people already have, index it once, then put the answer where the question gets asked.

Report report.xlsx Parse 90 columns Index SQLite Answer Telegram

Indexed once, answered instantly

Every column is read on ingest, so a lookup is a key press rather than a scan. The bot accepts whatever format the question arrives in - spaced, dashed or lower-case - and normalises it before matching.

  • Python
  • SQLite
  • Telegram Bot API

Stack

Boring tools, chosen on purpose

Everything here favours things that keep working unattended: a file-backed database over a cluster, a scheduled job over a queue, a static page over a framework.

  • Python
  • FastAPI
  • SQLite
  • Next.js
  • Telegram Bot API
  • Make.com
  • Cloudflare Pages
  • Docker