I am one of the coaches of my kids’ rec soccer team, the Red Falcons, in Fernandina Beach, Florida, and in the middle of October the fall season was nearly over. The end of a kids’ season usually means a plastic trophy for every player. I decided against trophies this year and made every kid on the team a trading card instead.
A trophy goes on a shelf and stays there. A trading card is a small story about one kid: an action shot, a nickname, a few numbers, a scouting report written by someone who watched them play all fall. Kids can carry a card in a pocket, show it to a grandparent and trade it at recess. The guide below covers how I built eleven of them in a week of evenings with Claude Code and an image model, the rules I set before I touched a tool, what failed, and how the cards got from a screen to a sealed pack.
The thirty-second answer
✶ The thirty-second answer
Use the real pixels for who a kid is, let the model do everything else, and put a parent’s eye on every pick. The face work ran locally on my own Mac. The image model drew the action, the stadium and the light. I looked at every result and threw away anything that did not look like the kid I know from Saturday mornings.
If you only want the idea, trading cards instead of trophies, the no-code version near the end needs a phone, a free template and a copy shop.
The whole project ran from October 15 to October 21. It took a Swift script of about thirty lines, a Python card builder, an image model reached through a connector inside Claude Code, and, at the end, a card printer.
The rules before the tools
The rules came first because the cards are about other people’s children. A rec team is a lot of families, and most of the kids on the Red Falcons are not mine. So before the first photo arrived, I set four rules and gave them to every Claude Code session that touched the cards.
- Cards only for kids whose parents said yes. Opt-in, one family at a time.
- The back of every card stays warm. An early draft of one scouting report said a kid “never passed the ball.” The line was true in the way a box score is true, and I cut it on sight. A card should be something a kid wants to show people.
- No invented nicknames. Where I had given a kid a nickname over the season, the card used mine. When I later asked the model for suggestions for the kids who had none, I approved each one by name before it went on a card.
- Family and team only. The cards go to the families and never get posted.
The other families opted their kids into cards, not into a blog post, so this guide shows no cards, no photos and no names, and those rules are part of the method I am describing. If you build a set for your own team, the rules travel with the pipeline.
The crest
The team needed a crest for the corner of each card, so I asked an image model for six options: shields, falcons, and one with a shrimp boat for the town. One of the six had quietly borrowed the falcon of an NFL team. Nobody asked for that, and the model did not mention it. I dropped it and picked a shield with the boat. The lesson rhymes with the one in my brand-from-zero guide: look hard at every generated mark for somebody else’s identity before you put it on anything you hand to a child.
The pipeline, one kid at a time
Every Claude Code session for the cards ran on the Mac mini at home, and that cost me the first evening. Parents texted me phone snapshots, and I pasted sixteen of them into a chat. The paths pointed into my laptop’s Photos library, which the Mac mini cannot see. The fix was to send the photos as attachments to the chat instead. Small, dumb, an evening gone.
After that the pipeline settled into one pass per kid, about two minutes of model time each round.
Face and body, on my own machine
Apple’s Vision framework ships with every Mac and finds faces in a photo without sending the photo anywhere. A Swift script of about thirty lines asks Vision for the largest face box in an image, and a Python wrapper crops a 768-pixel head shot around it. Another script lists every face box in a picture, which mattered later for the team photo. A third uses Vision’s person-segmentation request to cut a child out of the background, for the one card that used the real photo instead of a generated pose.
None of that needed the cloud. The face crops, the cut-outs and the measurements all happened on the mini, and the only thing that left the house was what I chose to send to the model next.
The pose
Higgsfield has a connector that works inside Claude Code, so the image model was one sentence away in the same session. For each kid I uploaded three references: the face crop, the full photo, and one picture of an empty stadium. The prompt, in effect, said: use his face exactly as in the close-up photo; do not beautify or redraw it; keep the outfit from the full photo; one action; the stadium from reference three; floodlight rim light; a low angle; no text. The model was nano_banana_2_1, at a 2:3 frame.
Each round produced four poses, and the session laid them out on a contact sheet. I picked one by eye. When a ball or a head got clipped at the edge of the frame, an outpainting pass widened the picture, and sometimes it only added sky, so I checked every one.
The card
The card itself is drawn in Pillow, the Python imaging library, by a script that reads one file of facts about the team.
Each card is 825 by 1125 pixels, which is 2.5 by 3.5 inches at 300 dots per inch with a 38-pixel bleed on every side. The front runs the pose full-bleed, darkens from a little past halfway down, and sets the first name in Barlow Condensed Black Italic on a red slanted band, with the nickname in quotes above it, the crest top-right and a series tab top-left. The back carries the crest in a circle, a table called THE NUMBERS, a SCOUTING REPORT, and two small gallery tiles cropped on the detected face. A couple of roster keys nudge the art per kid when a pose sits too high or too far left.
| Step | Tool | Where it runs | What it costs |
|---|---|---|---|
| Face crop | Apple Vision, from a short Swift script | My Mac, offline | Nothing, local |
| Cut-out | Vision person segmentation | My Mac, offline | Nothing, local |
| Pose generation | Higgsfield connector in Claude Code | The image model | About two minutes of model time for four poses |
| Outpaint | The same connector | The image model | A minute, and a second look |
| Card build | Pillow, one Python script | My Mac | Nothing, local |
| Contact sheet | The same script | My Mac | Nothing, local |
| Gallery | A static page, unlisted | A web host | Nothing on a free plan |
| A card printer or a copy shop | A shop | About $0.17 a card at the printer, verify before ordering |
What failed, in the order it cost me
The image model drew good soccer players from the first afternoon. Every failure was about the gap between a good picture and the right kid, and every fix came from a parent saying “no, look again.”
The model could draw a stadium at night in a minute; it could never tell me which face belonged to which family.
The angled face crop
One kid’s first round came from a three-quarter-angle photo, and the result did not pass the eye test. The picture was lovely and it did not quite look like him yet. Round two used two straight-on, well-lit crops, plus a prompt that named his features in plain words: round cheeks, the shape of his ears, a full row of small teeth. Round two passed.
Rule: a straight-on, well-lit crop beats a flattering angle, and naming the features beats hoping.
“Bangs”
One prompt described a kid’s hair with the word “bangs.” The parent noticed instantly, because the kid has never had bangs, and the generated hair followed the word instead of the photo. The rewrite described the hair the way the parent would say it out loud: short, fine, brushed loosely forward and to one side.
Rule: describe hair the way the parent would.
Action, not pose
The first round of shooting poses gave me kids standing near a ball. The second round described the technique the way you teach it at practice: planted foot beside the ball, head over it, laces through it, full follow-through, the ball leaving the frame. I had asked for “cooler, more dynamic,” and the second round was that, and also simply correct soccer.
Rule: prompt the mechanics, not the mood.
Nicknames
Half the team had no nickname. I gave the ones I had, then asked for suggestions for the rest and approved them one at a time. Each nickname became the second row of THE NUMBERS, and one redundant stat came off each card to keep four rows.
Rule: the model suggests, the coaches decide, every time.
The team card
The team card started from the real team photo, taken at sunset after a game. Every kid was lit fine. In the back row, the coaches stood half in shadow under an orange cast, and I told the session two things: the coaches look badly lit, and we do not have to stick with reality.
The second version cut the whole group out of the photo with Vision and set them in the generated stadium. Better, and still sunset skin on every face.
The third version asked the model for four relights of the original photo. The winner re-shot the group in an empty night stadium under even floodlight, and I loved it, except that two people no longer looked like themselves. One was a coach, me. The other was a kid.
Real faces, borrowed light
“Match the reference face” prompts only nudged the two faces that had drifted. The fix that worked used the real pixels. The session cut the two faces out of the original photo, pasted each one onto the relit picture at the face box Vision had found, matched the colour channel by channel, and softened the edge with a feathered oval. Then one image-model pass got a single job: remove the paste seams and the colour cast, and change nothing else. Real faces, stadium light, no seams.
Then I asked for one more change: remove the coaches and let the kids be the focus. One inpainting pass erased the four adults and rebuilt the stands behind them, and every kid came through untouched. The group now sat small under a lot of empty stadium, so I asked for a tighter crop and then a lift. Left to right, the group was already centred; what read as off-centre was the kids sitting low against the title band. The coaches survive on one small tile on the back.
Say less
Two more kids did not quite look like themselves in the relit photo, so the same recipe ran again, with the face-paste tool now taking the face boxes as an input. I tried two blending prompts. The specific one drifted other faces on the card. The vaguer one, remove the cast and the seams and change nothing else, won.
Rule: when you want the model to touch less, say less. The team card also settled the thesis of the whole project: the model is wonderful at light and has no idea who anyone is. Keep the real pixels for identity, and let the model do the lighting.

Shipping it
Eleven cards front and back make twenty-two images, and texting twenty-two images to a group chat compresses every one of them and buries them under the next morning’s messages. So the session built a single web page sized for a phone: every card front and back, tap to zoom, a save link under each card to the print-size file, a download-all zip, and the team photo at the bottom.
The page went to an unlisted address with headers that tell search engines not to index it and a robots file that disallows everything. I texted the parents one link. When a card changed, the session rebuilt the page and redeployed it to the same address, so the link in everyone’s phone never went stale. If you want that rebuild to be one word instead of a paragraph of instructions, a Claude Code skill is the place to keep it.
Printing
The 825 by 1125 spec with an eighth-inch bleed is the standard trading-card template, so a card printer takes the files as they come out of the script. Two routes work. A US print-on-demand card maker prints on real card stock, double-sided, with no minimum, in about two weeks, for about $0.17 a card plus a small fee per deck in the prices I found; verify before you order. The faster route is same-day cardstock at a copy shop, cut on their guillotine, with the corners rounded on a corner punch.
Either way, each card goes in a penny sleeve and then a toploader, the way real cards do. Each kid’s prize is a sealed pack of the whole team set, with their own card on top.
The no-code version
You do not need Claude Code, an image model or a Mac to give a team cards instead of trophies. The pipeline above is the deluxe edition. The plain edition takes a phone, a free design app and a copy shop.
- Ask every family first, the same opt-in as above.
- Take one clear photo of each kid at the last game or practice, straight on and in good light.
- Open a trading-card template in any design app, or start a blank design at 2.5 by 3.5 inches. If the app asks for pixels, use 825 by 1125, which includes the eighth-inch bleed.
- Put the photo, the first name and any nickname the kid already has on the front. Put three or four numbers from the season on the back, with two warm sentences you would be glad for a grandparent to read.
- Export print-quality PDFs and take them to a copy shop for cardstock, cutting and rounded corners. Penny sleeves and toploaders come in cheap packs.
The back of the card is where a coach’s attention shows, and writing it costs nothing but an evening.
Why trading cards beat participation trophies
Participation trophies tend to end up in a box in a closet, all the same gold figure on all the same plastic column. Nobody trades them. Nobody reads the back of one, because there is no back.
A card is small enough to keep and specific enough to matter. A kid opens the pack, finds their own face under stadium lights, reads the nickname the coaches signed off on, and then finds every teammate behind it. The sealed pack does one thing a trophy cannot: it hands each kid the whole team.
The team card’s scouting report says it better than I can: “One team, one fall, and coaches who showed up for every bit of it. They learned to pass, to hustle, and to pick each other up. Nobody got a trophy this year. Everybody got a card.”
If you have been talking to your Claude Code about work all year, try asking it for something for the kids on a Saturday sideline. The model will draw the stadium. You still get to decide who is standing in it.
One essay, every Sunday morning, on making a life and a living while the machines learn to do both.
Questions I get asked
What can I give a kids' team instead of trophies?
Custom trading cards. Each kid gets a card with their own photo, first name, a nickname if they already have one, a few numbers from the season and a short, warm scouting report from the coaches. Hand every kid a sealed pack of the whole team set with their own card on top, and they go home with the whole team instead of a plastic figure. You can make them with a free design template and a copy shop, or go further with an image model.
What size should a trading card file be for printing?
A standard trading card is 2.5 by 3.5 inches. At 300 dots per inch with an eighth-inch bleed on every side, the file is 825 by 1125 pixels. Keep names and numbers at least an eighth of an inch inside the trim line so the cutter does not clip them.
Can I do this for my team?
Yes, if the parents say yes first. Ask each family, one at a time, and only make cards for the kids whose parents agree. The tools are ordinary: a Mac for the face crops, Claude Code to run the scripts, an image model for the poses, and Pillow to lay out the card. You do not need to write code. Every script in my folder was written in a Claude Code session from plain sentences.
Is it OK to put kids' faces into an image model?
Only with the parents' permission, and only as much of the face as the job needs. I found and cropped every face locally on my own Mac with Apple Vision, so the full photos never went through a face-finding service. The parents opted in for cards that stay inside the team, and nothing was posted. The model never decided who a kid was: every pose went past a parent's eye, and anything that did not look like the kid was thrown out.
How much do custom trading cards cost for a whole team?
The face work and the card layout cost nothing, because they run on a computer you already own. The image model is the one paid step, at about two minutes of model time for four poses per kid. Printing at a print-on-demand card maker came to about seventeen cents a card plus a small deck fee in the prices I found. A sealed pack of the whole set for every kid on a ten-kid team is about a hundred and ten cards, so the cards themselves come to under twenty dollars before deck fees and shipping. A copy shop can do same-day cardstock for less. Check current prices before you order.
Why trading cards and not trophies?
A trophy goes on a shelf and nobody reads it. A card is a small story about one kid, with a picture, a nickname and a scouting report written by someone who watched them all season. A kid can carry it, show it and trade it, and a sealed pack of the whole set hands every kid the whole team.
What did the model get wrong?
Likeness, mostly. An angled photo produced a kid who was not quite the kid, one hair description followed a word instead of the photo, and a relit team picture changed two faces. The fixes were straight-on crops, plain descriptions in the parent's words, and, for the team card, pasting the real faces back in and asking the model only to hide the seams.
How did you print them?
At 825 by 1125 pixels with an eighth-inch bleed, the files match the standard trading-card template, so a card printer takes them as they are. The two routes are a print-on-demand card maker, which takes about two weeks, or same-day cardstock at a copy shop, cut on a guillotine with the corners rounded on a punch. Either way, each card goes into a penny sleeve and a toploader.
— Joe

