Going Low Tech
Going Low Tech π¦
Last weekend we hosted a birthday party for my wife at our house π. Along with friends and family, we set up three activity stations throughout the evening:
- π Dance Dance Revolution (I have my own original machine)
- π€ Karaoke (in the main living room)
- π Basketball (on our backyard half court)
Naturally, we needed a way to crown an overall champion ππ₯.
My first instinct was the same as usual: build something in R using Shiny. Instead, I deliberately went in the opposite direction.
No R βοΈ. No Shiny βοΈ. No databases βοΈ. No APIs βοΈ.
Just Google Forms β , Google Sheets β , and a free QR code generator π³.
Sometimes the simplest tools are exactly the right ones π§ β¨.

Defining the Problem π§©
The requirements were simple.
Each activity followed the same flow:
- Complete the activity π―.
- Record your score π.
- Move on to the next station πΆ.
At the end of the night, the participant with the highest combined score would win a gift card ππ.
The biggest constraint was that there would be no dedicated scorekeeper. I didn’t want someone stuck at a laptop π» entering results while everyone else enjoyed the party.
The scoring system needed to be completely self-service π.
Building the Forms π οΈ
I already had the guest list, so creating the forms was straightforward.
Each activity received its own Google Form with the same predefined list of participants. This avoided spelling mistakes βοΈ and ensured submissions could be matched correctly across activities.
At each station, I printed a QR code linking directly to the appropriate form. After completing an activity, participants simply scanned the code π±, selected their name, entered their score, and submitted the form.

Bringing Everything Together π
Each Google Form fed responses into its own worksheet within a shared Google Sheet π.
From there, I built a master scoreboard that combined all three activities, calculated total scores, and generated a live leaderboard π.
As scores were submitted, the leaderboard updated in real time and was displayed on a television throughout the evening for people to monitor πΊβ¨.
It ended up feeling far more polished than expected for something built almost entirely with spreadsheet formulas…. lol

An Unexpected Development Tool π€
The most interesting part of this project wasn’t Google Sheets itselfβit was how I built the system.
The concept, workflow, and overall design were mine π‘. The LLM helped me turn that idea into a working system by acting as a technical collaborator and a sanity check throughout the process π€.
While I still had to create the Google Forms, generate and print the QR codes, and set up the initial spreadsheet structure, the LLM helped operationalize the ideaβguiding architecture decisions ποΈ, troubleshooting Google Sheets formulas β, debugging issues π, and refining the leaderboard logic one step at a time.
The experience felt much closer to pair programming π₯ than simply asking an AI to generate code and copying the result. It was a fast feedback loop where I could propose an approach, test assumptions, and iterate quickly.
For a small project like this, that feedback loop was incredibly valuable β‘. I went from an idea π‘ to a working prototype in about an hour.
Takeaways π
As developers, it’s easy to default to the technologies we’re most comfortable with.
This could have become another Shiny application π±, but it didn’t need to.
Google Forms and Google Sheets were more than capable of solving the problem while keeping the experience simple for everyone involved. UX matters!
The result was a reliable, live scoring system π that ran the entire evening without requiring anyone to manage it.
Sometimes the best engineering decision isn’t choosing the most powerful technology πβit’s choosing the simplest one that gets the job done β .
Until next time π»