POS Polling & Reporting

A licensee of a client was familiar with the Operational Reporting solution I had implemented. They wanted something similar but the monthly cost of the POS vendor’s polling and replication services was too steep.

I built a polling agent that extracted the sales data from their POS servers daily, summarized the data in a cloud hosted database, and delivered the reports to the owner daily. This allowed him access to similar tools as corporate management at a fraction of the cost.

Skills: Database design and development, application development
Tools: SQL Server, SSRS, C#, MS Azure cloud services


In 2008 I was working with a client to improve their employee scheduling process. What worked fine for a handful of locations was quickly becoming unmanageable as they continued to grow. We evaluated the scheduling package from the POS vendor and found it cumbersome, inaccurate, and lacking in basic functions. At the time, there were no widely known cloud based solutions for scheduling. I saw an opportunity and built Schedappy to meet my customer’s needs as well as provide a business opportunity for myself.

Schedappy focuses on making employee scheduling simple. It doesn’t have every feature in the book, but the program runs well and I have a customer base that has stuck with me for years. If I were interested in business development it is a tool that could be scaled up and marketed broadly around the country.

You can find Schedappy online here: Schedappy Staff Scheduling

Skills: Project management, business analysis, web development
Tools: ASP.NET, C#, jQuery / javascript, SQL Server

Loyalty Program

A regional food service business competing in local markets against a dominant global corporation required a loyalty program to keep pace in the industry. Without the deep pockets of the mega-corporation we faced some technical limitations on what we could do. But we designed a program that matched the significant features of the competitor while giving my client an unrivaled platform to speak to their customer base.

I was responsible for building the technical components of the program. This consisted of:

1) POS integration for reward and promotional redemption,
2) A website portal for loyalty member registration and account management,
3) Database processing of daily sales and membership information,
4) Platform for transactional and marketing campaign communications via both email and SMS,
5) An internal CRM tool for customer support,
6) Financial processing of member card reloads, and
7) Reporting and analysis tools.

Skills: Project management, business analysis, database design and development, systems integration, web development, data analysis
Tools: SQL Server, ASP.NET MVC, C#, WordPress, PHP, javascript, Twilio, Mandrill / MailChimp, Authorize.net, SSRS, SSAS, Excel

Recipe Management

A food service operator had the following 3 significant goals on their radar:

1. Enable daily calculation of cost-of-sales,
2. Enable regular calculation of raw product usage (as an input to perpetual inventory calculations), and
3. Enable the management of product nutritional information.

In order to accomplish all of those things, the company needed first to be able to manage the recipe associated with all the products they sold in their stores. I built an application that integrated with (1) their Inventory Management solution to get the raw products and costs and (2) their point of sale system to get their finished products sold in stores. With those two inputs I was able to give them the tools to build all the recipes and to automatically calculate the actual recipe costs based on raw product prices. We also enabled the users to input the nutritional information for the raw products and then the system automatically calculates the nutritional information for the final products.

Skills: Business analysis, systems integration, web application development, database design and development
Tools: SQL Server, ASP.NET MVC / C#

Inventory Management

A growing retail operator required a solution that would simplify the inventory ordering process for their corporate operated stores and external accounts. Instead of managers calling their orders into home office and having someone there key the information into the distributor’s system manually, they wanted to streamline the process so that managers could submit the orders directly to the distributor.

We built an online ordering website that sync’d with the distributors warehouse management system. Products and prices were extracted from the WMS to the website, and orders submitted online were loaded directly into the WMS. We were also able to use the new up-to-the-minute product and pricing information to improve the accuracy of cost of sales reporting.

The original WMS was QuickBooks; the distributor changed WMS in 2014 and we were able to update the integration with no impact to end users. Currently, we are in the process of using the order information as one of the inputs to a perpetual inventory calculation.

Skills: Business analysis, systems integration, web services, database management
Tools: SQL Server, ASP.NET / C#, QuickBooks / NECS Entree WMS

Total Offender Management

My client is a private correctional facility that offers transitional programs for offenders. They also offer community based programs such as misdemeanor probation, community service, electronic monitoring, and drug and alcohol testing. The programs offered by this company require a significant amount of documentation and tracking, and the client is required to be able to prove compliance with federal, state and local contracts.

Starting in 2008, I led an initiative to develop in-house software that would enable the client to manage all aspects of their operations related to the offenders. I was the project manager and business analyst for the project, and the client provided subject matter experts from across the organization to provide requirements. I hired and managed several contracted resources over 16 months to build the initial application, which went live in April 2009. Since 2009 I have managed ongoing enhancements to the system.

The project has been so successful that all pre-release centers in Montana now use the system. In 2018 we implemented a full-time development team in order to fast-track an ever growing list of desired improvements.

Skills: Project Management; Business Analysis; Quality Assurance; Database design, development, administration; Report development

Tools: ASP.NET Web Forms & MVC, MS SQL Server, MS SQL Server Reporting Services, C#, Azure (VMs, SQL Database, App Services), javascript, jQuery, Subversion, Bugzilla


My client required an externally hosted website that could be used by court officials. The officials needed to track the progress of the offenders that had been sentenced to my client’s programs. Offender information was available in an internal system (Total Offender Management) but court officials could not be granted direct access to that system. Also, officials could not access information for offenders outside their jurisdiction.

A custom website was built with role based permissions that controlled access to offenders from each jurisdiction. The information is updated from the internal database at least daily. The system was built in a modular format to allow for easy addition of new datasets to the website. Initial programming was done by a contracted resource, and I have done ongoing development myself.

Skills: Project management; Business analysis; Web development; Database design and administration

Tools: ASP.NET MVC, MS SQL Server

Application Monitoring

One of the challenges of building solutions for smaller companies is that your client doesn’t generally have an internal IT staff to accept a “hand off”. This means that (1) the solution needs to work reliably without unhandled issues, and (2) any issues that do arise need to be addressed without waiting for someone internally to notice the problem.

The solutions I’ve built for my clients have hundreds of tasks that run automatically anywhere from once a minute to monthly. At first I had the tasks send me an “all good” email in addition to any notifications generated from error conditions. This quickly got out of hand and required me to spend time every day filtering through the “all good” emails to find any alerts.

The solution I found was to build a system based on a heartbeat concept. Tasks are setup to send my system a heartbeat notification each time they complete successfully. I have monitors defined with parameters such as how frequently I should get a heartbeat. Now I just receive notifications whenever a process has not sent a heartbeat when expected. This might be due to a server outage, internet disruption, or application error.

Skills: Web development; Database design and administration

Tools: ASP.NET MVC, MS SQL Server