Functional Changes

A big update on the latest Call Theory Mission Control changes to distract you while we finish up the Starbase data obfuscation needed for ongoing testing.

Functional Changes
Photo by Alex McCarthy / Unsplash

This is a comprehensive (read: long) update on the Call Theory Mission Control dashboard ("Mission Control") that I think most of you will be interested in.

Read on to learn about:

  • Mission Control licensing change
  • A functional AI strategy
  • New feature: CSV Export
  • New API methods: Text Between, Preg Match, IsJson, IsUrl
  • Feature removal: Music Streams
  • Feature removal: LLamm.cpp support
  • Bug fixes/Feature Updates: Board Check, Inbound Email, Images
  • An update on Starbase since conference
  • Random things you should know

Mission Control Licensing

I've been talking about it long enough: it's time to release Mission Control under the FSL (Functional Source License.) While not "open source" by the strictest definitions, it functions in nearly the same capacity.

What does this mean, exactly?

  • The source code will be published for anyone to download and use 1st-party.
  • The license restricts 3rd-parties from using the software to compete with us.
  • Each release of Mission Control reverts to an MIT license after 2 years.

In practice, this means call centers and answering services can download, install, use, and modify the dashboard at no cost. You just can't resell it until the version you're working with is older than 2 years.

In addition, with Mission Control being freely available under FSL, we'll be adding new support and hosting plans that are finely-tailored to Mission Control without requirements for a full Call Theory subscription.

This will likely take a couple of weeks for us to change all of our systems to account for the marketing/support/pricing updates.

While I certainly don't have the pedigree or talent of this developer, his final conclusion is one I've come to myself - and why I'm trying out FSL:

"This experience has also made me consider changing the license of Spegel, as it seems to be the only stone I can throw." – Phillip Laine

A Functional AI Strategy

We're also changing how Mission Control interacts with AI technologies.

Previously, we worked on embedding open-weight models into the server infrastructure (using ollama.) This worked well for a while, but the rapid iteration of Large Language Models (LLM) and their resource requirements quickly outgrew standard (read: affordable) web servers.

LLMs are also extremely difficult to reliably test - for example, when using an LLM for grading a call, I could never get the same output for the same call. Very similar at times, but not something I felt comfortable releasing.

In short, it wasn't feasible to continue to run local models on commodity servers. Like how you can't use a graphics card to mine Bitcoin anymore?

I also found that it was impossible to "keep up" with other tooling for AI. For example, there's no way I can compete with these tools:

A screenshot of my personal Open-WebUI interface
I did briefly consider embedding one of those into Mission Control, but ultimately decided against it.

But a protocol? That's my jam. I learned technology by reading RFCs in the 90's so if there was such thing as an AI protocol it would be very interesting to me.

Anthropic released Model Context Protocol (MCP) on November 25th, 2024 - less than 5 months ago [at the time of writing.]

Source: https://modelcontextprotocol.io/introduction

It was certainly compelling when released, but I felt it needed more ecosystem support before I jumped in head over heels.

There are a lot of opinions on MCP - whether it's just hype, or actually useful - but I intend to at least explore it to find out for myself. I do think it's extremely early and needs a ton of work, for example:

  • It needs an improved developer experience (comes with maturity)
  • MCP client examples need expanded beyond Anthropic ecosystem
  • All kinds of security implications from access to prompt injection.

But the promise of a unified interface for exposing line-of-business tools to your AI platform of choice (whether that's a 3rd-party service, or your own hosted models) is a more realistic path for utilizing AI within Mission Control moving forward.

I think Charlie Guo did a good write-up that's worth a read for the nerds out there:

The MCP Revolution
Why this open standard is becoming essential infrastructure for AI agents.

Charlie Guo on Substack: "The MCP Revolution"

New Feature: CSV Export

After spending wasting hours trying to reformat a crystal report into a CSV file for automated imports, I decided that I never wanted to do that again.

Wrapping fields creates entirely new lines, or cuts off content, or I'm doing it wrong.
And so was born, the CSV Export feature.

The concept is fairly simple: we need to be able to export a simple, compliant CSV file of client messages that include only the fields from the message that we care about.

The XmlMessage field of msgMessages contains each revision of the message taken and all of the field values at the time the message revision was saved. This means we can query the latest revision of the message and get it's field values very easily.

In fact, we already do this for the Message Revision feature where you can see the exact changes between messages and fields for each message edit/change.
An example from the existing Message Revision / Field message view

Exporting data to a CSV file is mostly a solved problem for developers, so the only real hard part of this feature was marrying the interface between selecting which fields to include, how to filter which messages are included, and the time-frame in which to send said messages and their respective fields.

And of course, it must be a standards-compliant CSV that can be easily imported without modification into other systems or applications.

New API Methods

Did you know that I used to run a free website that provided utility functions for use with Amtelco scripts as an API that anyone could use?

From the Wayback machine: scripted.cloud from 2018

It was called scripted.cloud, but ultimately all of this functionality was absorbed into Mission Control's API gateway (and also, nobody used it because I suck at marketing.)

I still own the domain though. "Maybe I'll repurpose it one-day" he says, optimistically.

Anyways, we've greatly expanded the utility functions available since then and even added a few new ones:

  • Text Between - Parse and return the text between the start and end strings of your choice (i.e., <title>you can get this easily</title>)
  • Preg Match - Return matches based on the supplied Regular Expression ("regex") pattern
  • IsURL - Determines if the provided string is a valid URL
  • IsJSON - Determines if the provided string is valid JSON.
Speaking of JSON: Hey Amtelco, we really need a JSON_ENCODE function of some sort so we don't have to manually escape values when constructing JSON objects using Advanced Expression editor.

Putting the "hold" on Hold Music

We're removing the Music Streams feature from Mission Control. This feature allowed you to use icecast locally to provide customized hold music through Genesis's music streams feature.

The feature itself only provided marginal improvement over what you could do with Amtelco's system natively, and the biggest problem clients had - finding actual usable hold music - wasn't addressed.

Instead of maintaining this feature (and it's attack surface) I've decided to remove it moving forward. If demand presents an opportunity in the future to put some work into it we can revisit it then.

LLama.cpp Removal

While never released beyond beta status, we're axing the llama.cpp integration in favor of creating Model Context Protocol (MCP) servers through Mission Control.

See the section called "A Functional AI Strategy" for additional context.

To reiterate, we're no longer embedding open-weighted LLM models into Mission Control due to server resource requirements. Instead, we're creating a suite of MCP servers ("tools") that will be usable by supported AI integrations.

We are not removing whisper.cpp (transcription) capability as the model is significantly smaller than it's larger LLM cousins

Fixed Bugs & Feature Improvements

We've also added a small list of bug fixes and improvements to features based on customer feedback.

These features will be published to existing customers over the course of the next several weeks.
  • The Inbound Email CSV attachments can now be downloaded directly from the web interface when used for database imports
  • A new Inbound Email status for failed events has been added to better track failed imports
  • An issue with malformed profile images has been fixed in the menu and on the team-management page.
  • Multiple agents can now be attached to a Board Check issue.
  • Screenshots of messages are now attached when submitting to People Praise through the Board Check utility - providing a better user experience within People Praise.
  • The Utility and System drop-down navigation menus should no longer flicker on page load

Starbase Billing Updates

I know, I know - where is it? It's been too long since conference and I still haven't published it.

Soon™, I try to explain.

Ever run into an issue where you know what you have to do, but it's really difficult and you can't quite get it working the way you need it to? That's where I am with test data. It's a much harder problem to solve than I had originally planned for.

Here are the considerations:

  1. I need test data for both ongoing feature-testing but also for demo capabilities.
  2. I can't use actual customer data unless it's fully obfuscated first.
  3. The dates should shift automatically when testing/demoing.

So if we take a point-in-time backup and obfuscate the records, we should be able to connect it into Starbase to run tests, demos, and more. And that data should automatically keep in sync with the "latest" period without having to pull and obfuscate new data from customers.

So yeah, it became a really difficult problem. But I'm almost done with the obfuscation scripting which will be part of the Starbase application, allowing you to demo or test using a copy of your own live database.

Random Things You Should Know?

Just a small sample of things that we're thinking about this week.