HAL WRIGHT

Home / Build with an AI agent

I came in to rewrite my app. The agent got it signed instead.

Part 2 of 2 · 8:18 · October 12, 2026

The dictation app from the previous piece would not run on a corporate PC: unsigned, it looks like spyware. The human came back planning a Python rewrite; the planning conversation priced the real problem, signing, and found that the Microsoft Store signs a package for free and the developer account now costs nothing. On camera: the brief dictated with the tool itself, the fee that was zero, a packaging test that lost the database and produced export/import, a measurement that kept the older correction model, the human-only steps routed through a two-agent ticket relay, and the email from Microsoft two hours later. The lesson: state the challenge and the goal, not the method.

Chapters

  1. 0:00Cold open: the folder that would not run
  2. 0:49The question I brought: port it to Python?
  3. 1:35Pricing the options, and the fee that was zero
  4. 2:43Packaging found the data problem
  5. 3:53The steps only a human can do
  6. 5:00The email from Microsoft
  7. 6:16What the conversation did
  8. 7:15Close: described into existence

Transcript

The narration, as written. The voice is synthetic.

0:00Cold open: the folder that would not run

Last time I built a dictation app in an afternoon, and the point of that story was the plan. This is what happened when I tried to use it somewhere else. I copied the folder to a second computer, one with corporate antivirus and application control, and it would not run. No exception could be made there, and none should be. Think about what the program does: it listens to the microphone, hooks the keyboard, reads credentials, and sends text to the network. Unsigned, that is the exact shape of spyware. I like the way this program works, and I want to use it everywhere I work. In its current form it was too restrictive. So I came back to the agent with a plan of my own.

0:49The question I brought: port it to Python?

My plan was a rewrite. I dictated the brief with the tool itself: port the whole application to Python, so it runs under an interpreter instead of a compiled Windows executable, and maybe the security software lets it through. Then I asked the question that mattered: do you think that would help? It would not. The language is not what the antivirus is judging. A packaged Python program is a bigger, stranger blob than a native one, and it does the same four things. The problem was never the code. The problem was that nobody had vouched for it. The problem was signing, and I had ruled signing out before I walked in, because of the cost.

1:35Pricing the options, and the fee that was zero

So the agent priced the actual problem. A code-signing certificate on subscription, about ten dollars a month: no. I am not paying a recurring fee to sign one application, and I do not plan to make many. An extended-validation certificate, two to five hundred dollars a year: worse. Or the Microsoft Store, which signs a package with Microsoft's own certificate after it passes certification. I remembered the Store having a developer fee, so I asked what the one-time fee was now. The answer came back: the fee is zero. Individual developer account, zero. Everything on the page, zero. It has been free for a year. A stale assumption had priced out the right path, and I would never have asked the question if I had come in with instructions instead of a goal. The requirements were ordinary: a personal Microsoft account, a photo ID for verification, a privacy page on a site I control, and a few days of patience. A native Windows application beats a Python script. We went for the Store.

2:43Packaging found the data problem

Packaging came first, and the first test broke something useful. The Store only signs a particular kind of package, and an app installed that way runs from a read-only folder. So the database that used to sit beside the program moved into a hidden folder under the user's profile. When we moved the app for the test, the database did not move with it. Nothing was lost, but a user would never find that folder, so export and import became a feature in the settings window that afternoon. A test that loses the data is how a feature gets found. One more measurement from the same sitting: a new version of the small correction model had come out, so the agent ran it against the old one on this job. Slower, and less accurate. The older model stays the default, even though it costs more, because we are spending pennies and accuracy wins. The new one is a choice in settings, not the default.

3:53The steps only a human can do

The next part is the part no agent can do, so we routed around it. Identity verification is a photo of my license and a selfie. The developer account, the app name, the agreements, and the Submit button are mine. All of that went through the ticket relay between the build agent on this profile and the planning agent on my private one: a file that says what outcome is needed, what facts to return, and what must never be written back. I did my part off camera. The private side created the account, reserved the name, wrote the privacy page onto my site, and filled every screen of the submission: pricing, properties, the age-rating questionnaire, the listing text, the notes for the certification tester. It stopped at each thing a human has to agree to, and it stopped at Submit. The build agent read the identity values back from the relay and built the real package. Then we waited.

5:00The email from Microsoft

Certification usually takes hours and can take three business days; this took about two. The email said the application was live. SpeakIt has a page in the Microsoft Store, by Hal Wright, under Productivity, with the mostly black screenshot the listing required and a description that says what it does and names the two services behind the optional correction. Signed by Microsoft, with nothing to pay and nothing to renew. I will be honest about one thing I did not understand going in: I thought I was getting a program signed. I was publishing one. The Store does not sign a file and hand it back; it signs a package and lists it. I could have restricted who sees it, and I saw no reason to, so it is there by link for anyone. This is my first Microsoft application, and it was never the point; the point was to show how planning goes. The real test is still the corporate PC, with no exception asked for. That is where this started, and that is where it gets checked next.

6:16What the conversation did

Look at the shape of this sitting against the one before it. Last time the plan did the work. This time I came in with the plan already made, a rewrite in another language, and the planning conversation found a better outcome at no cost but time, by starting from the challenge and the goal instead of the method. Treat the agent as a coworker, or a consultant you are consulting about a problem you have. It has read most of the internet, and when it has not, it can go and look. Do not come in prescriptive about what needs to be done and how. Come in free: here are the challenges, here is the goal, what do you recommend? That approach has led me to things I did not know existed and did not know how to do, and it led here. Windows only was the goal at the start, and it still is. We just needed someone to vouch for the file.

7:15Close: described into existence

One last thought, because the Store page made it plain. There are a lot of dictation apps on that page, and I suspect many of them exist for the same reason mine does: somebody did not want to pay a monthly fee for a tool they could describe. This is not a software development channel. This is making the tool you need, in your own image, the way you want it to work, and then not paying for it every month. Mine listens to me as much as I listen to it: when it hears something wrong, I fix it, the fix goes into the dictionary, and the goal is the day I stop checking. A lot of what is sold as a service can be described into existence by the person who needs it. The agent did the building, and this time the conversation did the plan.