Ray K. stingraydeveloper

AI agents · Fixed-price milestones · Evenings and weekends, Mountain Time

I build AI agents that read the whole thread, pick up new skills, run a small crew, work in a harness, and just work.

It doesn't move until you do.

An agent reads your messages, keeps your records current and drafts the reply. The draft waits until you say send.

Look closer. Every line is a row of numbers: real weights from the classifier further down this page.

Three drafts are waiting for you.

The agent wrote them. It can ask for approval, check on it and collect the approved text. It has no tool that can approve, so an instruction hidden in a stranger's email has nothing to pull.

    These drafts run in your browser with the same rules as approval-gate, my open-source MCP server: TypeScript, 15 tests, CI. It works with any agent that speaks MCP.

    Not everything needs a language model.

    This classifier sorts a customer message into one of 150 pigeonholes, in your browser, with nothing sent to a server. When it isn't sure, the message goes to the tray for a person. It knows banking, travel, home and small talk, because that is what its public training set covers.

    150 pigeonholes · one per intent threshold

      Loading the model…

      I trained three models on CLINC150. The most accurate one was the wrong pick: it let 27% of off-topic messages through with confidence. The plain one made about half as many wrong moves, and it is the one running here.

      ModelIn-scope accuracyOff-topic caughtWrong automatic moves
      TF-IDF + logistic regression92.5%89.9%3.7%
      Hand-written neural network (NumPy)88.4%88.3%3.9%
      MiniLM embeddings + logistic regression95.3%73.0%7.1%

      Results, training code and the hand-written network: intent-router.

      What I've built.

      These are drawings, made by the same code that draws the top of this page. The production systems live inside companies and can't be shown.

      1. A pencil drawing: the blob in the centre, with thin threads running out to six small scribbled tiles.

        An MCP layer that 200+ people use every day

        A VS Code extension and MCP server that connect an AI assistant to Jira, Confluence, GitHub, Jenkins, Snyk and OpenShift at a large financial services company. In production on 12+ teams. Over 10,000 hours of manual story writing saved so far.

        MCP · VS Code · Jira · Confluence · GitHub · Jenkins · Snyk · OpenShift

      2. A pencil drawing: the blob among scribbled trays and stacks of paper, with one sealed envelope held by a gold thread.

        The back office of my own small business

        An agent system that reads email, SMS and WhatsApp, keeps the CRM and task list current, puts commitments on the calendar, fills PDF contracts and files documents. Client replies wait as drafts until a person sends them. It runs every day, for a real business, with real customers on the other end.

        Email · SMS · WhatsApp · CRM · Calendar · PDF forms · Filing

      3. A pencil drawing: the blob with its eyes closed, listening, while a strand of digits shaped like a sound wave flows to it from a scribbled telephone handset.

        A voice agent you can phone

        A personal experiment in Python with Twilio and a real-time speech model. It holds a conversation and calls tools to book appointments. A pause that is fine in chat makes a phone call feel broken, so latency drove every design choice. A working experiment, not a product.

        Python · Twilio · Real-time speech · Tool calls

      4. A pencil drawing: the blob waiting behind a small scribbled gate with a gold latch, holding a draft.

        approval-gate

        The MCP server behind the first demo. Three tools: request approval, check on it, claim the approved text. None of them approves. Requests carry an idempotency key, approved text can be claimed once, and the log is append-only and hash-chained so a casual edit shows up.

        TypeScript · 15 tests · CI · Open source

      5. A pencil drawing: the blob sorting a stream of notes into many small pigeonholes, with one note dropping into the tray below.

        intent-router

        Three models on CLINC150, judged by the one number that matters when a classifier acts on its own: how often it makes a wrong move. The hand-written NumPy network is in there too, with its gradients checked against a numerical estimate. It loses to logistic regression, which is the honest result.

        Python · NumPy · CLINC150 · Open source

      Both repos, and most of this page, were built with Claude Code. That is how I work now, and I'd rather say so.

      How I work.

      Six years of software development, mostly in regulated financial services. AWS Certified Solutions Architect. BASc, University of Waterloo. I work in the harness you already use, or build one from scratch.

      We agree on a scope and a fixed price. You fund a milestone. You get working software, tests, a written handover and a recorded walkthrough. I work evenings and weekends, Mountain Time.

      Work with me