Build your smallest useful unit
Your project, on dummy data. Low stakes. Nothing real touches it.
The goal
Build the smallest useful unit for your project, on dummy data.
Leave with something that runs. Or a clear spec of what would.
- 5min1 · Form
- 5min2 · Dummies
- 10min3 · IDEA pass
- 20min4 · AI writes the script. You read it, run it.
- 5min5 · Traps
- Dummy data only. Every sandbox file is fake.
- Client data goes only in tools approved for it, like U-M GPT and Maizey. Today, none of it.
- Your project's smallest useful unit is a starting point to argue with, not an assignment.
Speaker notes
Circulate by shape. Intake → triage has six teams (Zell, MTA, Dining, OVPR, Oakland FOIA, CAI), so start there. Then pile → catalog (Ginsberg, FJA), then many sheets → one table (Marsal, Basketball, Michigan Medicine).
NDA teams use dummy data only. Client NDA: Oakland County and CAI. UMSI NDA: Zell, OVPR, and the MTA project (with IP). Nothing from a client goes into any tool today.
Start the timer once every team has picked a file.
Run it on your laptop: build your own
Tell it where your copy of the repo is, your tool and your project. It writes your terminal commands and a starting prompt you can edit.
Pick your sandbox file
Find your project. Start with its file. All fake, made for today.
| Your project | Shape | Start with |
|---|---|---|
| Zell Entrepreneurship Clinic | Intake to triage | form_zell_application_responses.csv |
| Innovation Partnerships MTA | Intake to triage | form_mta_screening_responses.csv |
| Michigan Dining sustainability | Intake to triage | form_dining_sustainability_responses.csv |
| OVPR limited submissions | Intake to triage | requests_inbox.csv, or build your own InfoReady-style form |
| Oakland County FOIA | Intake to triage | requests_inbox.csv |
| CAI AI Enablement | Intake to triage | requests_inbox.csv |
| Ginsberg Center archive | Pile to catalog | shared_drive_dump.csv |
| FJA staff AI portal | Pile to catalog | terrible_notes.txt |
| Marsal gift funds | Many sheets to one table | funds_development.csv + funds_finance.csv |
| Women's Basketball | Many sheets to one table | Generate two sheets keyed on player (the funds pair is the pattern) |
| Michigan Medicine Faculty Development | Many sheets to one table | form_faculty_interest_responses.csv |
Also in the folder: team_members.csv (a roster, one document or email per row) and yelp_sample_20.csv (reviews: rating, main issue, needs a reply?, draft reply).
Speaker notes
Tie each intake team back to demo 1. MTA: the eligibility rule. Dining: the next step is an AI memo draft for review. OVPR: the rubric comes first. Oakland FOIA: exact duplicates. CAI: this is your intake form.
Answer keys for the planted problems are in the instructor folder. Don't give them away; let teams find them.
Step by step
-
Build the Google Form 5 min
- New Google Form. Question titles = the CSV header. The header is the form.
- Pick short answer, checkbox or dropdown to match the data.
- Link a responses Sheet: Responses tab → Sheets icon.
- Submit two or three responses by hand. Watch one land.
-
Fill it with dummies 5 min
- Fast: import the ready-made CSV. On the responses Sheet: File → Import → Append to current sheet.
- Or make your own with U-M GPT. Paste this, then paste your CSV header row after it.
U-M GPT: generate dummy responsesI am building a test copy of an intake form so I can develop an automation without touching real data. Here are the form's questions, as a CSV header. Generate 15 realistic fake responses as CSV rows with the same columns. Use fake names and @example.edu addresses. Make them varied and messy the way real submissions are: include one duplicate submission from the same person, one response with a required field left blank, one that answers two questions in one box, and one that is clearly outside what the form is for. Do not use any real person or organisation.
Imported rows don't fire the form-submit trigger. That's fine. Step 4 handles it.
-
IDEA pass on your sandbox 10 min
Identify
What does "done" look like for one submission?
Document
Source: the responses Sheet. Transformation: which fields become which output. Output: a doc, an email, a status column, a row in another sheet. What's fixed? What varies?
Experiment
The smallest version.
Adjust
What breaks?
-
Have AI write the Apps Script 20 min
Ask for two shapes
Trigger on submit
onFormSubmit: one new response, one output.Test it: submit a response by hand.
Process the backlog
Walks every row with an empty Status. Does the work. Writes "done" and a timestamp.
You need this one: imported rows never fire the trigger.
The prompt shape
- Describe the columns.
- Paste three sample rows.
- Say what output you want.
- Ask for the code and a plain-English explanation of each section.
Prompt skeleton: fill in the bracketsI have a Google Sheet of form responses (fake test data). The columns are: [list each column and what it holds]. Here are three sample rows: [paste three rows] For each row I want: [the output: a status column, a doc, an email draft, a row in another sheet]. Write a Google Apps Script with two functions: 1. One that runs on form submit and handles the new response. 2. One that processes the backlog: every row whose Status column is empty. It does the work, then writes "done" and a timestamp. Give me the code and a plain-English explanation of each section.
Before you run it, three checks
- What is the loop?
- Where would a new field go?
- What tools and permissions does it need?
Then run it. Paste it into Extensions → Apps Script and run. Authorize when asked. That screen is the permissions lesson, live. Read it: it lists every key you hand over.Speaker notes
The authorization prompt is the payoff of the permissions talk at 2:30. "It acts as you." Ask a team to read their consent screen aloud.
-
Hit the planted problems 5 min
The duplicate The blank field Two answers in one boxFor each one, decide: a rule, or manual review?
Add a needs review status, with a reason, rather than guessing.
No form in your project?
Skip the form. Paste the dummy file into U-M GPT: the requests inbox, the drive listing, or the two sheets. Add a short spec of what you want for each item. Ask for a table back.
Then the same IDEA pass, and the same traps check.
Two tracks
Track A No install
- Google Form + Sheet + Apps Script.
- U-M GPT writes the script.
- You read it, check it, run it.
Everyone can do this one.
Track B Agent on your laptop
- Claude Code, Claude Cowork or Codex, only if your team already has one.
- Work in a folder that holds only dummy data.
- Give that folder a house-rules file:
CLAUDE.mdfor Claude Code,AGENTS.mdfor Codex. - Keep it on ask-before-acting.
The house rules I used for the demos
# House rules for this folder Everything in this folder is dummy data made for a workshop. Treat it as if it were real. - Work only inside this folder. Don't read or write anywhere else. - The CSV files you were given are originals. Never edit them; write new files next to them. - Before you run any code, explain in plain English what it will do. - Put exact checks (duplicates, blanks, formats, dates) in code. Use your own judgment only where I ask for it, and say which is which. - When a row doesn't fit the rules, mark it "needs review" with a reason. Don't guess. - Never send email, post, or upload anything.
Speaker notes
CAI said they want Claude Code and Codex experience. If they have it, point them at Track B. Everyone else: Track A.
Timer
- 45Pick your file. Build the form from the header.
- 40Form built. Fill it with dummies.
- 35Dummies in. Do the IDEA pass.
- 25IDEA done. Prompt the AI. Read the script. Three checks.
- 10Run it. Authorize. Hit the traps.
- 5Rule or manual review? Pick what you'll share.
- 0Time. Share-out is next.
Speaker notes
The timer keeps running if you click to another page and back. A small clock stays in the corner while it runs. Use −1 / +1 if we start late.
Stuck?
Shrink the unit
One row. One field. One status. Get that to run first.
Paste the error back
Give the AI the exact error. Ask it to explain in plain English, then fix it.
Mark it and move on
Can't decide a row? Mark it needs review and keep going.
Speaker notes
At 4:05 call time and move to share-outs: three or four teams, two minutes each. What did you automate? What did it hit? What stays manual?
Our build log
Type as you go. It saves in this browser. The My notes button (bottom right) downloads everything from every page as one file.
Site: tinalasisi.github.io/automating-without-overwhelming-yourself · Source on GitHub