After having used a lot of external platforms to build out Functional notes, I constantly hit limitations that were prohibitively expensive for me. So I decided to build such a platform myself, and I’m making a WordPress plugin to handle it.

I call it taskwizard.

Rather than a “no code/low code” platform, I’m building this as an “auto-code” platform, where I will build atomic functions with standard logging and output, and then chain them together and process notes from this site (and my other Discourse sites, the main reason I’m building a plugin, to make it easy to deploy elsewhere).

It is “auto-code” because I’m building each function with the assistance of large language models (primarily ChatGPT 3.5 and ChatGPT 4.0). By utilizing the countless years of prior code produces by PHP users and WordPress developers, I’m able to feed the LLM API calls and build out functions in a way that it can then chain together.

I’ll use this topic to discuss what I’m doing. :+1:

To achieve my goals, I’m kicking a lot of this process to other systems.

All the actual content interaction will be in Discourse, via webhooks with tag and other data that will be used to activate workflows.

In WordPress we use a webhook catcher plugin; I’m currently using Thrive Automator – WordPress plugin | WordPress.org, and only to receive the webhook payload (around 50 points of data to use in the workflow) and then create a new CPT called something like “Run”.

When a new Run is created, that will execute the relevant workflow, and the last function will normally be a Discourse API call to create/update a topic/post/PM.

Initially I had thought to store the functions in a CPT for that exact purpose, but at the end of the day I want the Tasks (the individual, atomic functions for doing ETL operations and API calls) to be fairly standardized, and that would be easiest to accomplish by relying on the structure a plugin provides.

Anyhow, what this means is that I’m not worrying about any triggers or networking (outside of API call Tasks). Now user auth, that is all Discourse and permissions.

The parts I’m am handling:

  • Tasks - atomic functions for doing things
  • Workflows - chains of functions, called when a Run is created
  • Run - calls a Workflow and executes it; contains initial payload to work on, and is used to identify Logs created by Tasks
  • Logs - this is a CPT, where the standardized output of each Task is sent

Runs and Logs are a CPT to be added. Running a Workflow and standardizing the Logs and error reporting are a large part of this.

There was a point where I was naming these things based on the wizard motif. I called them things like “gestures”, “spells”, “casts”… it made no sense to practical use.

I decided I will name these:

  • Workflows are now Processes
  • Runs are now Executions

Tasks, grouped into Processes, and Executed, while Logged. :+1: