Introducing Catholic Functions: A Better Way to Run Parish Fundraisers

Last October, I stood in a checkout line at our parish gala for over twenty minutes. The line snaked out of the cashier room and collided with people trying to pick up their auction items. Volunteers — mostly the same dedicated group of women who make these events happen every year — were buried in paper bid sheets, manually reconciling winners across more than 200 items. The event raised good money, but it ran on the heroics of a few rather than on good systems.

I left that night thinking: there has to be a better way.

I am parishioner at St. Christopher Catholic Parish in Marana, Arizona, and I’ve been building software for over 40 years. When our steering committee started planning the 2026 gala — this time a fundraiser for our new multi-purpose building — I offered to solve the problem with code.

Why not use what’s already out there?

We looked. The established players in this space — Blackbaud (enterprise pricing, sales-call required), GiveSmart (starting around $2,395–$2,995/year), OneCause (roughly $2,995/year or 5% of proceeds) — are built for large nonprofits with dedicated development staff and big budgets. For a parish running one or two events a year with volunteer committees, these costs eat directly into the money meant for the cause.

We needed something purpose-built for how parish fundraisers actually work: volunteer-run, one-night events where simplicity and speed matter more than enterprise features nobody will use.

What Catholic Functions does differently

I started building in April 2026, with our September gala as the deadline. The platform is designed around one principle: eliminate the lines and the paperwork.

Here’s what that looks like in practice:

  • QR code check-in — Attendees show their ticket QR code at the door. One scan, they’re in. No searching through printed lists.
  • Automatic bidder number assignment — Buy a ticket, get a bidder number. No table to stop at, no card to pick up, no number to remember to write down.
  • Phone-based bidding and payment — Scan an item’s QR code, place a bid from your phone. When you win, pay from your phone. No cashier line. No waiting.
  • Live projector displays — Fund-a-Need campaigns show a real-time thermometer, scrolling donor list, and confetti effects on a projector. Energy in the room goes up. Pledges go up with it. Here is an example of the projector display being used to drive ticket sales!
  • Paper bid sheet support — Not every event is ready to go fully digital. The platform supports both modes, and staff can record paper winners after the event just as easily.
  • Item pickup verification — At the end of the night, volunteers handing out auction items no longer have to guess. They scan the attendee’s ticket QR code (or search by name or bidder number) and instantly see which items that person won, whether they’ve paid, and what’s ready to release. No cross-referencing paper lists, no “let me go check with the cashier.” Green means paid — hand it over. Red means unpaid — point them to checkout. One tap marks an item as picked up so nothing walks out unaccounted for.
  • Express checkout — For those who prefer to pay at a station, cashiers scan one QR code and see everything the attendee owes — auction items, pledges, all of it — in one transaction.

All of this — plus ticket sales, donor tracking, program ad sales, seating charts, expense tracking, event reports, and tax receipts — in one platform. No juggling three different services and a spreadsheet.

Built for parishes, available to all

Catholic Functions is being built first for St. Christopher’s 2026 Boots and Bling gala, but the vision is larger. We want to offer this to parishes across the Diocese of Tucson, and eventually to Catholic parishes anywhere.

For non-Catholic Christian churches, we’ve launched the same platform under Flock Functions — same codebase, same features, different branding. A church in any denomination can use it to run their fundraising events without the overhead of enterprise software pricing.

What’s next

Our first live event is September 2026. Between now and then, we’re refining the experience, testing with real volunteers, and making sure the platform holds up when 120+ attendees are bidding, paying, and checking out simultaneously.

The goal isn’t to become the next big SaaS company. It’s to give churches a tool that works well, costs significantly less than the alternatives, and lets volunteers spend their night enjoying the event — not buried in paperwork.

If your parish or church is looking for a better way to run fundraising events, reach out. We’d love to help. Check it out at Catholic Functions.

White Rabbit

Have you ever wanted to be able to know when someone other than you has logged into your Mac? I wanted something that went beyond “Find my Mac”. I mean, that is nice functionality but I want to be notified when someone logs in, where they are geographically, and even what they look like!

So why “White Rabbit”? Because a Mac is a man’s cave and mine is protected by the Rabbit of Caerbannog. Google it, then giggle. I have had many digital white rabbits over the years.

The solution below is not perfect but it works well enough and can be improved. With some modifications, it might be made to work on a Linux box.

Requirements:

  • Automatically trigger upon login
  • Be as hidden as possible as not to attract attention
  • Send a text message to my phone with the current location and a picture taken from the Mac camera

What you need to know / have:

  • Basic terminal commands
  • shell scripting
  • cloud server

As this isn’t a tutorial, I won’t bore you with the logic of how the solution came to be, just how to get it working. This also serves as sort of self documentation for me. I can do that, it’s my blog.

I used an app on the Mac called “Automator”. It has the nice capability to be able to take a bunch of actions, string them together, and package them as a macOS application. This application can then be set to run on login.

Prepare – Get the following items taken care of first:

  1. Download and install LocateMe. This is a command-line utility that uses geolocation to return the location of your Mac. It has some nifty parameters too, which we will explain. It can be found here: https://sourceforge.net/projects/iharder/files/locateme/
  2. Sign up for textbelt.com, which allows you to send text messages, for a fee, from the command line. https://textbelt.com. They have different plans even for cheap guys like me. You will get a ket, which is a text string unique to you. Make sure you put it someplace handy and don’t loose it.
  3. Make sure you have a place to put the picture. I simply copy it to my server in the cloud. You should configure yours with a secure key like I did. All the cool kids do it that way. Again – this isn’t school so google it. It’s not that difficult.

Now, lets put everything together within the Automator app.

1 – Open Automator and start a new “application”.

2 – Add the action “Set Computer Volume” and configure it so that it mutes the volume. We don’t want the baddies to hear the camera, do we?

3 – Add the action “Take a video snapshot”. Configure it to place the picture it takes somewhere you will remember, I chose Downloads:

4 – Add the action “Run Shell Script”. Copy the script I provide later into it. In a bit I will explain what each line does for you:

5 – Then add the action “Set Computer Volume” again, this time to un-mute the volume. We don’t want them wondering why the volume went away and start investigating!

Ok, that’s the structure of the Automator app, 5 simple steps. All the fun happens in the shell script so lets take a look at it. First, before you rush and just copy and paste and go on your merry way, this WON’T WORK by just copying it into your app. You need to change stuff. So keep reading.

Code.

I am going to explain just the executable lines below one at a time, and then provide the entire script. My mom is reading this and she would want it that way.

First, we capture the current time into a variable using the date function. Here we captured the year, month, day and then the hour, minute and second. You know, for legal purposes. We will use this for a unique picture name here in a bit.

current_time=$(date "+%Y.%m.%d-%H.%M.%S")

Then we capture the name of the computer into another variable:

host=$(hostname)

Next, we rename the picture that we took so that they wont overwrite each other if multiple logins are triggered.

mv ~/Downloads/snapshot.tiff ~/Downloads/$host-snapshot-$current_time.tiff

Now upload the freshly renamed file. Replace the key, usernames and directories to make it work. I would test it as well…

scp -i ~/.ssh/white_rabbit.key ~/Downloads/*.tiff username@someserver.com:/somedirectory

Delete the file once you upload it. It is always good to clean up after yourselves children. Now, this is a bit of an aggressive approach below but I like scaring people with rm -rf and a bunch of asterisks… You know who you are.

rm -rf ~/Downloads/*.tiff

So now we have taken a picture and uploaded it to our online lair. Ok server. Whatever. Now we need to tell somebody what has happened!

Using the nifty LocateMe command, lets capture just that Latitude and Longitude. Lets capture it in a format that we can use in a URL for Apple Maps too, cause that will be handy!

LOCATION=$(~/LocateMe-v0.2.1/LocateMe -f "{LAT},{LON}")

Next, let us write the message to be contained in the text message we will send. Oh this is the fun part. Go wild. But lets keep it short. Ours will say what has happened and then provide two URL’s. The first will be the URL for Apple Maps to show the location. The second will be the URL to the photo that was uploaded.

message="Login performed from Brad's Mac: http://maps.apple.com/?ll=$LOCATION pictures: https://someserver.com:/somedirectory/$host-snapshot-$current_time.tiff"

AND finally, lets send ourselves a text with the results! curl is a handy command line utility that is basically a web browser for the command line. You can point it at sites and it does stuff. Yeah. It’s that cool.

curl -X POST https://textbelt.com/text --data-urlencode phone='5208675309' --data-urlencode message="$message" -d key=<yourkeyhere>

That’s it! Here is the whole script. Remember, you will need to change the important bits!

#upload the picture taken by automator
current_time=$(date "+%Y.%m.%d-%H.%M.%S")
host=$(hostname)
mv ~/Downloads/snapshot.tiff ~/Downloads/$host-snapshot-$current_time.tiff
scp -i ~/.ssh/white_rabbit.key ~/Downloads/*.tiff username@someserver.com:/somedirectory
rm -rf ~/Downloads/*.tiff
#phone home
LOCATION=$(~/LocateMe-v0.2.1/LocateMe -f "{LAT},{LON}")
message="Login performed from Brad's Mac: http://maps.apple.com/?ll=$LOCATION pictures: https://someserver.com:/somedirectory/$host-snapshot-$current_time.tiff"
curl -X POST https://textbelt.com/text --data-urlencode phone='5208675309' --data-urlencode message="$message" -d key=<yourkeyhere>

So, once deployed on login, the only thing a person sitting at the computer would notice is that the screen will flash on the Mac. That is the side effect of the “Take Video Snapshot” action. You will get a text message with clickable URL’s showing the location of the Mac as well as a picture of whatever happens to be sitting in front of the computer.

Some additional things I was thinking of doing with this:

  • Use the “say” command to have the Mac express some indignation to the person who logged in. You can even use different voices! Imagine their surprise when it says “Well, that’s no ordinary rabbit! That’s the most foul, cruel, and bad-tempered rodent you ever set eyes on!”
  • Have this trigger on other events, such as when someone wakes up the screen using “screenwatcher”, which would need to be installed. In fact, I may already have done this. Who knows. Just don’t come around my Mac without the Holy Hand Grenade of Antioch.

What other ideas do you have to extend this? Leave them in the comments!