The Humor
Project

View projects in game design, data visualization, mobile applications, & more

HIGH SCHOOL ✧ VOLUNTEER ✧ MICROSOFT ✧ TEALS ✧ MAKECODE ARCADE ✧ PYTHON ✧ TEACHING ✧ CLASSROOM ✧ HIGH SCHOOL ✧ VOLUNTEER ✧ MICROSOFT ✧ TEALS ✧ MAKECODE ARCADE ✧ PYTHON ✧ TEACHING ✧ CLASSROOM ✧ HIGH SCHOOL ✧ VOLUNTEER ✧ MICROSOFT ✧ TEALS ✧ MAKECODE ARCADE ✧ PYTHON ✧ TEACHING ✧ CLASSROOM ✧
humor banner

Insights

Type

Research for
Columbia University's
COMS-E6901:
The Humor Project

Timeline

Jan - May 2026

Team

Kiley Matschke

Tools

NextJS

TailwindCSS

Gemini CLI

Supabase

Vercel

GitHub

IntelliJ IDEA

GitHub

View the full documentation for:

  1. Caption creation and rating app here
  2. Admin area app here
  3. Prompt chain tool app here

About

The Humor Project is a Columbia University research and development course. The research explores: what do people actually find funny, and can AI learn to generate humor in ways that resonate with human audiences? Each week, new “humor flavors” (different prompt and caption-generation strategies) are tested through public voting studies, creating datasets that support ongoing research into humor and human-AI interaction.

In this course, I developed a suite of full-stack applications to study how people respond to AI-generated humor. The work consisted of three connected applications: a public-facing voting platform where users rated AI-generated captions, an analytics dashboard for viewing and interpreting study data, and a prompt experimentation environment for testing and refining caption-generation pipelines. Through this process, I gained substantial experience building data-driven products and using AI as a collaborative development partner.

Process

  1. First deliverable: Caption creation and rating app
  2. Second deliverable: Admin area app
  3. Third deliverable: Prompt chain tool app

Caption creation and rating app

Task: Develop a public-facing voting site for captions. It should load a study, display images and their candidate captions, and collect votes that represent "this caption is funny for this image." The interface should make voting fast and intuitive. Votes will be stored in the Supabase domain so they become part of the shared research dataset.



Week 1: Get acquainted with IntelliJ, Gemini CLI, and Vercel by creating a basic Next.js app.


Week 2: Extend the app to read and display data from the Supabase database.


Week 3: Add gated UI.


Week 4: Add functionality for signed-in users to vote on captions, inserting new rows into the database.


Week 5: Add functionality for users to upload their own images and generate corresponding captions via POST request to the staging REST API.


Week 9: Conduct three in-person user studies to evaluate the functionality and usability of the caption creation and rating app (deliverable 1). Document observations and feedback.


Week 11: Implement UX/UI improvements directly based on user feedback

Admin area app

Task: Create a frontend to the data in the database. The app should allow for browsing and filtering studies, captions, images, votes, etc. and support iteration on humor flavors. The interface should make the dataset accessible and understandable.



Week 6: Design an interface displaying interesting stats from the data, specifically from users/profiles, images, and captions tables. Ensure all routes are protected behind a Google login wall.


Week 7: Update the app to read users, create/read/update/delete images, read humor flavors, read/update humor mix, create/read/update/delete terms, read captions, read caption requests, create/read/update/delete caption examples, create/read/update/delete LLM models, create/read/update/delete LLM providers, read LLM prompt chains, read LLM responses, create/read/update/delete allowed signup domains, and create/read/update/delete whitelisted e-mail addresses.


Week 12: Update the app to show stats about the captions that users are rating.

Prompt chain tool app

Task: Implement a prompt and pipeline testing environment for building your own humor model. Humor flavors are created through experimentation: write prompt steps, run generations, inspect failures, adjust constraints, and repeat. The app should let you modify prompt steps and run test generations against known image sets to improve the flavor. The goal is to make iteration easy.



Week 8: Use the REST API to create captions using a given humor flavor. Design an interface that can create/update/delete a humor flavor, create/update/delete/reorder a humor flavor step, read captions produced by a specific humor flavor, support dark/light/system default mode, test a humor flavor by generating captions using the REST API, and function only if the user is logged in as a superadmin or matrix admin.


Week 10: Create and test your own humor flavor using your prompt chain tool app.


Week 12: Add the ability to duplicate a humor flavor and its related steps with a new, unique name and ensure persistence in the database.


Week 13: Perform end-to-end testing of the full three-part system. Devise a test plan to verify all applications work as expected and fix any bugs or broken flows so they are demo-ready.

Reflection

Throughout this course, I learned how to build and deploy full-stack applications that support AI humor research. Working with NextJS, TailwindCSS, Gemini CLI, Supabase, Vercel, GitHub, and IntelliJ IDEA gave me practical experience designing systems that collect, read, and mutate data. One of my biggest takeaways was learning how to use AI as a partner to rapidly test and visualize new ideas. I also gained a deeper appreciation for the importance of user testing and iterative design, as feedback from real users directly informed improvements across my applications. Working alongside over 100 students on a shared database introduced challenges that I had not encountered in previous projects. Addressing issues related to data integrity, access control, and unexpected user behavior pushed me to implement more robust safeguards in my applications and gave me firsthand experience with the realities of large-scale collaboration. Ultimately, this course strengthened my development skills and ability to build effective products. I plan to continue my involvement in this research by pursuing a related project in the coming months: The Student Brain.