<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" >

  <title>Erik L. Arneson — Writer and Software Developer</title>
  <subtitle>Erik L. Arneson is a freelance writer and software developer with WordPress experience. He is located in Portland, Oregon.</subtitle>
  <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator>
  <link href="https://arnesonium.com/feeds/typescript.xml" rel="self" type="application/atom+xml" />
  <link href="https://arnesonium.com/" rel="alternate" type="text/html" />
  <updated>2026-06-18T15:03:10+00:00</updated>
  <id>https://arnesonium.com/feeds/typescript.xml</id>
  <author>
    <name>Erik L. Arneson</name>
  </author>
      <entry>
        
        <title>Process Automation for an Oregon Charitable Foundation</title>
        <author>
          <name>Erik L. Arneson</name>
        </author>        
        <link href="https://arnesonium.com/2026/05/process-automation-oregon-charitable-foundation" rel="alternate" type="text/html" title="Process Automation for an Oregon Charitable Foundation" />
        <updated>2026-05-22T00:00:00+00:00</updated>
        <id>https://arnesonium.com/2026/05/sref</id>
          <category term="cloud" />
        
          <category term="cloud-computing" />
        
          <category term="golang" />
        
          <category term="svelte" />
        
          <category term="typescript" />
        
          <category term="automation" />
        
          <category term="case-study" />
        
          <category term="google-cloud" />
        
          <category term="programming" />
        
          <category term="testing" />
        
          <category term="web-development" />
        
          <category term="software-development" />
        <content type="html" xml:base="https://arnesonium.com/2026/05/process-automation-oregon-charitable-foundation">&lt;p&gt;The &lt;a href=&quot;https://orsrscholarships.com/&quot;&gt;Oregon Scottish Rite Education Foundation&lt;/a&gt; awards scholarships annually to students across Oregon
who are entering into college or trade schools. Over the past few years, their foundation has grown,
requiring them to distribute more scholarships than ever. However, since the foundation board is
small and composed entirely of volunteers, they were looking for some way to automate their application process to
reduce the number of manual steps required.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;initial-approach&quot;&gt;Initial Approach&lt;/h2&gt;

&lt;p&gt;Members of the board approached me with a wish list of features and requirements. They wanted a
system to integrate seamlessly with their website, while incoming applications should be
automatically checked, sorted, and categorized by county. They already had a spreadsheet system for
tracking applicants as well as a cloud storage system for storing supporting documents; they wanted
the automation system to integrate with these existing components.&lt;/p&gt;

&lt;p&gt;Since the board was already utilizing Google Business products for cloud documents and storage, I
decided that the best approach would be to lean into Google Cloud services. Following their list of
requirements, I implemented a &lt;a href=&quot;https://cloud.google.com/run&quot;&gt;Google Cloud Run&lt;/a&gt; service in &lt;a href=&quot;https://go.dev/&quot;&gt;Go&lt;/a&gt; that processed incoming applications
from their website, then updated the spreadsheet while preparing their cloud storage system for each
application’s supporting documents. The spreadsheet now contained all the application data,
including a link to an automatically generated PDF version of the application and a link to the
cloud storage location.&lt;/p&gt;

&lt;p&gt;This initial approach cut out an enormous amount of manual work. Previously, applications were
submitted via the website and emailed to a board member, who then manually sorted them by county and
generated PDFs for storage and later distribution.&lt;/p&gt;

&lt;h2 id=&quot;implementation-challenges&quot;&gt;Implementation Challenges&lt;/h2&gt;

&lt;p&gt;The application submission window for the Oregon Scottish Rite Education Foundation runs from
December through March of each year, which gave us a limited amount of time to observe incoming live
data and how the automation was performing.&lt;/p&gt;

&lt;p&gt;My initial approach worked fairly well, and handled 94% of incoming applications properly. However,
the last 6% ran into various problems that prevented correct processing. One error arose from a
misspelling in a county name, which was caught early and corrected. Another series of errors arose
from processing errors with the Google Sheets API, which has both rate limiting and more mysterious,
inexplicable errors. I added additional error correction and error checking, but there was still
some additional manual work to enter data from a handful of applications.&lt;/p&gt;

&lt;p&gt;By the end of the application period, we had managed to reduce the amount of manual data entry and
processing by a large percentage, maybe as much as 60%. After discussing the current process
automation with the board, we began to see opportunities for further automation and improvement.&lt;/p&gt;

&lt;h2 id=&quot;additional-development&quot;&gt;Additional Development&lt;/h2&gt;

&lt;p&gt;After the first year’s application submission window, I began working with one of the board members
to plan out how the process could be improved even more. My list of improvements were primarily on
the backend, and involved robuster error detection and reporting, as well as a backup data store
that would allow the automation to recover from the Google Sheets API errors more elegantly.&lt;/p&gt;

&lt;p&gt;The board proposed an additional feature set that would further reduce manual data processing, by
allowing applicants to upload supporting documents such as letters of recommendation and high school
transcripts. These uploaded documents would then be processed and stored in the proper cloud storage
location, thus reducing the amount of manual file management required by volunteers.&lt;/p&gt;

&lt;p&gt;Implementing these two new features went very smoothly. It required the development of a new
frontend, using &lt;a href=&quot;https://www.typescriptlang.org/&quot;&gt;Typescript&lt;/a&gt; and &lt;a href=&quot;https://svelte.dev/&quot;&gt;Svelte&lt;/a&gt;. This frontend allowed applicants to upload their supporting
documents via a unique link given to each of them by automated email. It used both &lt;a href=&quot;https://cloud.google.com/storage&quot;&gt;Google Cloud
Storage&lt;/a&gt; and the Google Drive API to store these files.&lt;/p&gt;

&lt;p&gt;The improvements on the backend used &lt;a href=&quot;https://cloud.google.com/products/datastore&quot;&gt;Google Cloud Datastore&lt;/a&gt; and a more robust error recovery system.
It now backed up all incoming scholarship applications until they could reliably and more slowly be
added to the spreadsheet with the Google Sheets API, thus nearly eliminating all rate limiting
errors. In addition, progress reports and error output could now be viewed using a new frontend
administrative interface.&lt;/p&gt;

&lt;h2 id=&quot;results&quot;&gt;Results&lt;/h2&gt;

&lt;p&gt;This round of improvements produced significant results. Over the entire span of the second year of
application submissions, error rates dropped from 6% to &lt;em&gt;just one unrecoverable error.&lt;/em&gt; While I had
been hoping for improvement, even I was surprised by how much of an improvement we achieved!&lt;/p&gt;

&lt;p&gt;The board reported that the amount of manual processing was reduced by another 80-90%, with only a
few applicants resorting to email for sending in their supporting documents. While we have discussed
further improvements to the process automation for the next application submission window, the board
is satisfied with the improvements provided by the level of automation implemented so far.&lt;/p&gt;

&lt;h2 id=&quot;lessons&quot;&gt;Lessons&lt;/h2&gt;

&lt;p&gt;This project benefited a lot by reviewing requirements and expectations frequently with the client.
They were great at providing me with very clear goals from the beginning, and as we progressed and
it became clear where the most volunteer time was being spent, we were able to identify more tasks
for automation.&lt;/p&gt;

&lt;p&gt;On the development side of things, three things were clear. First, cloud services really make the
development and deployment of process automation tools like this a breeze. Costs can be kept low
while still providing robust infrastructure for hosting.&lt;/p&gt;

&lt;p&gt;Second, I learned once more the importance of unit tests. I wrote unit tests for most elements of
the automation software, which allowed me to catch breaking changes and test features very quickly.
&lt;a href=&quot;https://www.ibm.com/think/topics/test-driven-development&quot;&gt;Test-driven development&lt;/a&gt; can be a great way to run a project, and though I did not follow all of its
parameters strictly, that particular philosophy did guide my decision.&lt;/p&gt;

&lt;p&gt;Third, once more I was reminded of how the best-planned software runs into difficulties when it
collides with the real world. I failed to anticipate the Google Sheets API issues and did not
implement enough comprehensive error correction early on. That is not an error I shall repeat again!&lt;/p&gt;

&lt;p&gt;Finally, I learned that even with a project that seems as straightforward as this one, it is
important to control expectations early. This turned into a multiyear project because we saw room
for improvement. I think it is important for a business or organization looking for process
automation to understand that it can be an ongoing series of improvements; not everything will be
accomplished or perfected after one pass.&lt;/p&gt;

&lt;p&gt;Overall, I found this to be a rewarding project. I enjoyed working on software that was aiding a
good cause: helping high school graduates fund their education. It was also very nice to work for a
charitable foundation instead of a for-profit business; it made all of my programming feel a lot
better. I hope to work for more charitable foundations in the future.&lt;/p&gt;</content>
      </entry>
    
</feed>
