Hominid

Everything we have built

Our own products and tools, the ones running today and the ones we retired. We sell services, not these; they are here so you can see what we can build.

In use

Running today.

StackRates

Live2026Data extraction

Compares VPS and cloud server prices across 55 providers, each price read from the provider's own page and dated.

A pipeline reads every provider's price page or price API each day; most are read automatically and the few sites that block automated readers are captured by hand. Every price keeps its read date and its history, and the site is built as static pages that load fast anywhere.

StackRates: its home page as captured on 1 Nov 2026

Built with React + Vite prerendered to static HTML; Cloudflare Pages + Pages Functions (/go/ redirects); FastAPI on Railway; Neon Postgres; Node.js price pipeline run daily (GitHub Actions and a Linux server); IndexNow

Open StackRates

Leads app

Live2026Data extraction

Watches 288 marketplaces, tender portals and other sources for organisations that need ISO, NABL, NABH or NAAC certification work.

A crawler reads each source on its own schedule, real browsers read the sites that need one, and every lead is filed once in a ledger. A finder then looks for a working phone number on each lead. On 24 Oct 2026, 285 of its 288 sources were being read live.

Built with Cloudflare Worker + KV + Durable Objects; Node.js crawler (systemd) on a DigitalOcean server; Python nodriver browser lanes; Node finder agent; GitHub Actions (earlier GeM monitor); phone-first web app

GeM registration filler

Live2026Automation

Prepares a business's GeM seller registration, checks every answer against GeM's rules, then fills GeM's own form fields in the user's browser.

Answers stay on the user's own device. A one-click fill matches each field of the Government e-Marketplace form by its label, the way a password manager does; captchas, one-time codes, the terms and the final submit stay with the person.

Built with JavaScript module in the Cloudflare Worker (gem.js); bookmarklet fill engine; localStorage on the user's device; Pinchtab for the live walk-through

Jarvis dialler

Live2026Automation

Works through a call list for phone agents on their own mobile phones, connects the calls that are answered and logs every outcome.

A call server dials ahead of the agents, recognises answering machines so people only take calls with people, and records what happened on each call against the client's record.

Built with Python (FastAPI), SQLite, SignalWire

Jarvis client book

Live2026AI agents and assistants

Lets phone agents speak or type notes in plain words and turns them into updates to clients, orders and next calls.

A phone-first app over one book of clients, orders and next calls. Agents talk to it: speech is transcribed on the company's own GPU with Whisper large-v3 (chosen by our own speech-to-text benchmark) and turned into updates, with duplicate and do-not-call checks on every list it takes in.

Built with Python (FastAPI), SQLite, faster-whisper on a local GPU, Kokoro speech, Claude via OpenRouter

Docs

Live2026Custom AI software

Keeps every company document numbered, registered, checked against a written standard each night, and readable on a private site.

Documents are plain files with a strict header. A checker compares every one with the register each night (1 Nov 2026: 88 files, no errors), and a private site makes them readable and searchable.

Built with Markdown; Python (doc_check.py, doc_new.py); Astro Starlight; Pagefind search; Cloudflare Worker static assets + Cloudflare Access

Freelance rate calculator

Live2026Custom AI software

Works out the hourly, day and project rate a freelancer must charge from target income, costs, time off and billable hours.

One self-contained page with no dependencies: everything runs in the visitor's browser and nothing is sent anywhere.

Built with Vanilla HTML/CSS/JavaScript in one file; Cloudflare Pages (direct upload via wrangler)

Open Freelance rate calculator

Presence

In use2026Automation

A new business fills one form; a browser extension then fills or prepares its profiles on twelve platforms.

A browser side panel keeps an encrypted profile on the business's own computer and walks the owner through each platform, from Google Business Profile and WhatsApp Business to IndiaMART and Apple Business. It fills what it can; the owner presses Create and types the one-time codes.

Presence: its own screen, with test data

Built with Chrome extension (side panel); Cloudflare Pages + Worker + KV (feed, hub pages, forms); ECDSA P-256 signed recipe feed; GitHub Actions daily check; Node test suites and replay bench

ISO register

In use2026Data extraction

Builds a register of India's certified, accredited and licensed organisations from public registers, one record per organisation.

It reads public certification and accreditation registers, with a real browser where a site needs one, and reconciles each source against its own published total. By 28 Oct 2026 seven sources had given 55,834 rows. Records are then linked across registers into one entry per organisation.

Built with Python job dispatcher (Docker) on an Ubuntu server plus a GPU workstation; Splink record linkage; llama.cpp local model; OCR; WARC web capture; Common Crawl index; Cloudflare Worker (person-check page)

Earlier work and experiments

Retired, paused or built to learn. Each one taught us something we use now.

Speech-to-text benchmark

Experiment2026Custom AI software

Compared speech-to-text models on 300 recordings of Indian-accented English to pick the most accurate one for a voice app.

Ran 25 minutes of audio from the public AI4Bharat Svarah set, with speakers of 19 native languages, through Whisper large-v3 and NVIDIA Canary-Qwen-2.5B on the laptop GPU. Whisper large-v3 with a short business prompt had the lowest word error rate, 8.4 percent, against 9.12 percent without the prompt and 11.33 percent for Canary, which was about 2.7 times faster per clip (results.md, 15 Sep 2026). The result chose the speech model for Jarvis.

Built with Python; faster-whisper (Whisper large-v3, turbo); NVIDIA NeMo (Canary-Qwen-2.5B); Parquet; CUDA

Browser-agent experiments

Experiment2026AI agents and assistants

Early tests of AI-driven browsers: a local model choosing each step, and 25 headless browsers run from a workflow tool.

One test asked a local Llama 3 model for each next browser action and carried it out with Playwright. Another ran 25 headless browsers from the open-source n8n workflow tool with the browser-use add-on. What we learnt went into our own form tools.

Built with Python; Playwright; Ollama (llama3:8b); Docker Compose; n8n; browserless/chrome; n8n-nodes-browser-use

AdOps

Retired2026Automation

Turns a product list into ads for each sales channel and checks every ad against the channel's rules before anyone approves it.

Import a sheet; it writes the ads for Google Merchant Center, Meta and landing pages, checks each against rule packs kept as data, and puts them in a keyboard review queue. Every export gets a quality certificate and an audit trail nobody can edit. The optional AI rewrite runs on the customer's own key with a monthly cap.

AdOps: its own screen, with test data

Built with Node.js (prototype: built-in sqlite and http, zero dependencies); SQLite / Postgres / MySQL foundation; single-page HTML UI; Playwright Test Bench with a mail catcher; RDAP domain checks

Money Web

Retired2026Data extraction

Follows payments on a blockchain from wallet to wallet until the money reaches an exchange or stops, and maps the flow.

A crawler walks the chain ring by ring from a starting wallet and labels exchanges from public tags; a single-file map shows the result as flows and rings that a team can annotate together.

Built with Python; SQLite; TronGrid and Tronscan APIs; single-file HTML/JavaScript map

BubbleGum

Retired2026Automation

Turns any web form into a spreadsheet template, then fills the form row by row and logs each result.

A Windows desktop app. Its form reader turns single and multi-step forms into a CSV or Excel template; its filler submits one row at a time; a record-once, replay-from-a-spreadsheet engine pauses when something goes wrong. It shipped with its own updater, crash log and watchdog.

Built with Python (http.server backend, single-file HTML UI); Playwright and Selenium; OpenAI / Anthropic for the AI pass; PyInstaller; GitHub raw-file auto-updater

Dracula Downtown

Retired2026Automation

Records a browser task once and replays it in several Chrome windows, pausing for the steps only a person can do.

A recorder and player with a "your turn" key for captchas and one-time codes, later rebuilt as a desktop dashboard on the Chrome DevTools Protocol.

Built with Python and pywebview, then Electron and the Chrome DevTools Protocol

Dracula Uptown

Retired2026Automation

Drafts new documents from a source page or PDF on the user's own AI key, with an edit bar and Word export.

A desktop app that pulls clean text from pages and PDFs, drafts with GPT, Claude or Gemini on the user's own key, and lets each draft be refined with multi-level undo before export.

Built with Electron; OpenAI, Anthropic and Gemini APIs; docx export

Form Filler

Retired2026Automation

Reads any web form into an Excel template, then types each filled row into the form and records the outcome.

The first of the company's form tools (February 2026): a Python and Tkinter desktop app that drives the browser through Playwright, with pandas and openpyxl for the spreadsheets. It turned repetitive data entry into a spreadsheet job, and its approach carried into BubbleGum and Dracula Downtown.

Built with Python 3.11; Tkinter; Playwright; pandas; openpyxl