Roast My PR
01 / The challenge
A repository you had never seen, and two hours
Nothing was published in advance. Everyone opened the same contacts app at seven, in two halves, and started sending pull requests at it.
Challenge 1
Give a contact a face
Add a photo to a contact and render it as a circular avatar down the list. Sounds like an afternoon. It is a base64 payload crossing three size limits nobody had written down.
Challenge 2
One contact, many addresses
Retire the flat address, city, state, postal code and country columns and put a real one-to-many in their place: an addresses table, typed Home, Work or Other, grouped on the detail page.
Bonus
Then something of your own
Anything, as long as it stood on the two challenges underneath it. Half the room reached for the same idea from opposite directions, and a few went somewhere nobody expected.
Marked out of five, seven times over
- Working feature (Challenge 1)
- Quality of Qodo usage
- One-to-many correctness (Challenge 2)
- Code quality
- UI polish
- Creativity
- Coolest extra feature
Second on that list is the one that made the night what it was. Getting the feature working was worth five points. So was how well you used the reviewer: what you asked it, what you fixed, and where you told it, on the record, that it was wrong.
02 / In photos
What the room looked like
Nine photographs from the night, ending with the people who went home with something.

01 / GitHub HQ
Doors, and the pitch
The opening slide, before anyone had seen the repository they were about to work in.
03 / Winners
What came out of the two hours
Oussama Elfigha took the Mac mini for the best merged submission of the night. Ten Keychron keyboards went out beside it.
Grand prize / Apple Mac mini
oussamaelfigOussama Elfigha, for a share card that turns a contact into a qr code
A spec-correct vCard 3.0 with the typed Challenge 2 addresses in it, drawn as a QR you point a phone camera at, generated as an SVG on the server so no QR library ships to the browser. Qodo caught the bug that decided it, in the gap between the two repositories: the API took photos up to 2.8 MB while Next.js refuses a Server Action body over 1 MB, so a valid photo was being rejected before any validation ran.
Ten Keychron keyboards
10 winners

Karim Baba
Rebuilt the contact list as an actual phone book: A to Z with sticky letter headings and a jump rail, .vcf export, a print view that halftones every avatar through an SVG Bayer filter, and a drawn face for contacts with no photo.
Devang Sharma
vCard 4.0 export, picked because it proves both challenges at once: open the file in Contacts.app and the Work and Home addresses arrive as separate typed entries.
Kush Kirankumar Ise
RFC 6350 vCard export, per contact and for the whole list, written against the parts of the spec that are easy to get wrong: escaping, folding at 75 octets on character boundaries, and a real UUIDv5 so a re-import updates instead of duplicating.
Ananay Arora
A full liquid-glass redesign, with a square photo cropper, a LinkedIn field checked against spoofed domains and dead links, CI across Python 3.11 to 3.14, and 208 tests behind it.
Martin Pefaur
Six pieces of polish in one bonus PR: favourites pinned to the top, duplicate-email errors that keep your form data, soft phone validation that warns instead of blocking, address-type icons, vCard export, and drag-and-drop photo with a square crop.
Kamo Aghbalyan
Meetups: contacts who share a city, read off the new addresses table, turned into a Luma-style event page in one click, with the guest list as avatars and an invite to everyone on it.
Ramya Velaga
Favourites, and a pinned contact that stays at the top of the list.
Sophia Kurianski
A button that turns the contacts into superheroes and lets them fly around the screen.
Morgan Schofield
A QR code on the contact detail page.
Vagisha Tyagi
A share action that builds a standards-compliant vCard, renders it as a scannable QR, and offers the .vcf beside it.
04 / Everyone else
The other 45 submissions
56 things were handed in before nine o'clock. Every pull request is listed, in the order it arrived.
Half the room arrived at the same idea from opposite directions, a QR code that puts a contact straight into your phone, and no two of them built it the same way. The rest went somewhere else entirely: contacts as a network graph, contacts as a FIFA player card, contacts hidden in the low bits of a PNG, contacts you exchange by standing near someone for ninety seconds.
- 56
- handed in
- 45
- in the field
- 11
- went home with a prize
We do this often. The next one is already on the calendar.
Roast My PR was one Wednesday evening in San Francisco. There is a meetup somewhere most weeks and a hackathon running most months, all of them free and all of them open to anyone who turns up.