everythingpossible - Fotolia

Neat turns its receipt-scanning app into subscription-based software

Neat retires its legacy desktop cash-register receipt scanning app and moves to the cloud with SaaS subscription-based software and expertise from a contract programming house.

Businesses migrate to the cloud for a variety of reasons; to simplify operations, eliminate infrastructure, enhance performance or cut costs. For the The Neat Co., maker of the ubiquitously advertised namesake cash-register receipt scanning product, the cloud represented a way to merge divergent Mac and Windows versions and to create a new revenue stream with subscription-based software by adopting a fee-based software as a service model.

For all the witty puns that could be made about the cloud being a neat place to be, Neat found the experience of cloud migration challenging, rife with lessons from which any company contemplating a cloud-only future can learn. Andrew Schaps, head of engineering at the Philadelphia company, shared the transition's ups and downs with SearchCloudApplications.

Neat's longtime business model was to sell a package consisting of a scanner and a desktop software application. That application performed several functions: scanning receipts and business cards, doing optical character recognition (OCR) conversion, storing the scanned image and interpreted version in a desktop database, and -- the real reason for doing all of this -- tracking and categorizing purchases for budgetary and tax purposes.

"Our strategy had always been to offer a fully offline desktop application with one version for Windows and another for the Mac," Schaps said. Though the products for the two operating systems started out in lockstep, their development streams diverged over the years with separate features rolled out for each. "We eventually ended up with two applications that differed widely in features and user experience," Schaps said.

Beyond the need to support separate code bases, separate teams for development, user tech support teams, marketing and training had evolved. With a desire to unify the UX, company executives set out to do a simultaneous restart of the company and rebranding of the product. "We wanted to shift the paradigm from our offline-centric model to one that was fully cloud powered," Schaps said.

We wanted to shift the paradigm from our offline-centric model to one that was fully cloud powered.
Andrew Schapshead of engineering, The Neat Co.

Those first cloud efforts went live in the summer of 2012, but it was a case of the desktop application still leading with the cloud used primarily for synchronization. "Differences in the desktop and cloud versions led to a lot complexity," Schaps said. "The desktop still ruled and we quickly discovered that was counterintuitive to what the cloud is all about." After that experience, Neat decided the time had come to go all-in for a SaaS-based cloud product.

Development platform and language decisions

In 2011, when Neat embarked on its cloud transformation, Schaps said Amazon Web Services was essentially the only game in town. "We looked at platform as a service providers and found that the Google platform was at its very beginning and that Microsoft's Azure was focused solely on the Windows environment and did not have the cross-platform capability we needed," he said. "AWS was already established and had what we needed in terms of cloud formation, availability, resources spread across multiple regions and time zones, and very aggressive pricing." Another attractive feature was pricing for reserved instances, which allowed Neat to more closely tie costs to actual use.

Like nearly all companies undertaking an initial cloud applications development project, Neat had little in terms of in-house expertise with subscription-based software. To meet its aggressive cloud deployment timeline while still paying necessary attention to millions of customers still using the desktop applications, the company was forced to look outside. Eventually, Neat chose ThoughtWorks, a Chicago contract software development company with 36 offices in 12 countries. "ThoughtWorks embedded a large group with us," Schaps said. "We managed the architectural decisions, but ThoughtWorks provided the actual hands-on developers who worked side-by-side with our own people."

Neat's existing code base, which had evolved over the years into a combination of Ruby, C++, and C#, underwent its own changes. The Django web framework, written in Python, was considered for its speed-of-development advantages. However, it was Ruby on Rails that Schaps said "felt best." Only later did Schaps' team discover that RoR's single-threaded nature did not measure to performance expectations. The company is now looking to port portions of its software to Java, Scala and Node.js. The desktop component, still necessary for the process of physically scanning receipts into the system, continues to rely on C++ and C# to drive its OCR engine. The remainder of the desktop application, including processing logic and user interface, now consists mostly of HTML, Javascript and Cascading Style Sheets, which, Schaps said, is "still tops for layout and styling."

A new database

A significant impediment for expanding its original desktop application beyond receipt scanning was the reliance on a fixed-schema database. "It created obstacles and headaches as we tried to add new functionality and document types, such as invoices," Schaps said. As part of its cloud transformation, the company considered NoSQL databases but eventually settled on MongoDB stored on Amazon S3. "All metadata such as vendor, receipt date, and sales tax, is captured in mongo documents. It gives us great flexibility in adding new document types." With Mongo's document-oriented flexibility, Neat was able to expand from just receipts and business cards, adding invoices and statements to the list of document types that it can scan and parse into editable data.

With its shift to a cloud SaaS subscription-based software model, Neat is now able to add new features on a schedule to makes sense from a business perspective instead of once every year or two. That has become especially important as competition, all of it cloud-based, has grown. Through the subscription model, what was formerly a one-time software purchase is now a recurring revenue stream. Subscription plans that use customers' own scanners start at $5.99 per month, ranging up to $24.99 for a business plan that supports five shared users. The company continues to offer its own line of scanners, ranging from $149.95 to $499.95, depending on a variety of factors, including single page versus multisheet autofeed, and wired or wireless connectivity.

In the end, Neat believes it made the right strategic and technology decisions. "We are happy with our architecture, bringing in outside expertise worked for us, and Amazon is providing everything we're looking for. We'd do it again," Schaps said.

Next Steps

Does a SaaS model bring companies and customers closer together?

Is developing with Node.js in AWS a good thing?

Does AWS complicate cloud app development?

Dig Deeper on Cloud application migration