Skip to content
← ProjectsEuropean Hackathon League 2026 · Round 2, Paris

Given the walls, generate the rooms

Draw an empty apartment shell, get back a complete, labelled room layout. On an unsolved benchmark we mapped the whole solution space: twelve models across five generative families, trained from scratch on an AMD MI300X.

Result
1st place
Prize
500 EUR
Built with
Mykyta (Nikita), Luis Dehlwes, Yelyzaveta (Lisa)
Stack
PyTorch · Diffusion models · AMD MI300X (ROCm) · Next.js
the first evening, before any of the work started
the first evening, before any of the work started

Mykyta (Nikita) and I took an ICE from Munich to Stuttgart, met Yelyzaveta (Lisa) and Luis there, picked up a car, and drove the rest of the way to Paris. The drive is half the reason this one stuck with me.

The road

the ICE out of munich
the ICE out of munich
stuttgart, car loaded, everyone in
stuttgart, car loaded, everyone in

We stopped in Strasbourg to eat, which nobody had planned, and the pizza there turned out to be incredible. Then back on the road, France going by the window, until Paris.

the unplanned strasbourg stop
the unplanned strasbourg stop
the last stretch into paris
the last stretch into paris

We checked into the hotel, dropped everything, and went straight back out to sit by the river with some drinks and a baguette. The sun went down over the water and none of us wanted to move. Just a lot of fun before a single line of code got written.

drinks and a baguette, riverside
drinks and a baguette, riverside
another one, paris does this well
another one, paris does this well

Two hackathons, one weekend

I have been telling this like it was one hackathon, but it was actually two. We had signed up for both of them on the same weekend, fully believing we could pull off both, which in hindsight is very us.

One was Paris Builds by Unaite. That one was less of a hackathon and more of a gathering, a room full of founders and builders and researchers, with a guest list that had Y Combinator, Anthropic, Hugging Face, and Qube Research & Technologies on it. The other was the one we had actually come to compete in, the EHL Paris Research Hackathon x Iterate, where our team was called Oasis and we were signed up for the MSD floor plan generation challenge. The idea, which felt completely reasonable on paper, was to spend part of the weekend at Paris Builds meeting people and soaking it in, and then go put our heads down on the hard technical problem.

Team Oasis was me, Nikita, Luis, and Lisa.

me and luis at paris builds
me and luis at paris builds

The plan held up beautifully right until we tried to leave Paris Builds to head back to the other venue. Our car was down in an underground parking garage, and we simply could not get back in to it. No access card, no obvious way down, and everyone we asked seemed to assume we had parked there for the whole weekend, so nobody was in any particular hurry to help us. The catch was that every single one of our laptops was sitting inside that car. So we spent a good while just standing around outside a parking garage in the middle of Paris, completely unable to do the one thing we had driven all that way to do, watching perfectly good hacking time disappear. It took close to four hours to untangle. Not exactly how I had pictured the weekend going.

By the time we finally had our machines back and made it over to the research hackathon, we were properly behind. But we were in the room we came for, and that was enough to get going.

The work

the poster at the entrance
the poster at the entrance

The problem was hard, which is why I liked it. The Modified Swiss Dwellings benchmark: you get handed a building's load-bearing walls and an access graph (which rooms should connect to which), and you have to generate the actual room layout. Its own authors admit most published methods "often look infeasible." Nobody has really cracked it, and that is exactly what I want to be sitting in front of at 9am on day one.

the hacking begins, full team
the hacking begins, full team

We decided early not to bet everything on one model. On a problem nobody has solved, that is how you lose. So we built a leaderboard of approaches and scored them against each other the same way: retrieval, rule-based baselines, five families of deep generative models, and an LLM reasoner. Twelve models in all, dead ends kept in instead of hidden.

heads down on the models, half a second before we clocked the camera
heads down on the models, half a second before we clocked the camera
the same ten seconds, fully aware of the lens now
the same ten seconds, fully aware of the lens now

Something I did not really expect going in: the best parts of this hackathon had almost nothing to do with sitting at a desk. The moments I actually replay in my head now are the ones we spent away from the laptops, and the funny thing is that is also where most of the ideas that ended up winning came from.

Nikita did a lot of walking that day. He thinks better on his feet, and at some point he wandered off to a park nearby and came back a while later with an idea that we basically dropped everything to build. A bit later all four of us went out to grab a bite together, mostly because we were completely wrecked and needed to be somewhere that was not the venue for a little while. And then late that night Lisa and I went for a long walk, and we just talked, one idea rolling into the next, for what felt like hours. That is the walk that stuck with me. If someone asked me for my favorite memory from the whole weekend, it would probably be that, and not anything that happened on a screen.

the discussions that actually moved things
the discussions that actually moved things

We were also using tabane during the hackathon while it was still being built. Working on top of a tool that was itself half-finished had its own particular chaos to it.

tabane, still under development, along for the ride
tabane, still under development, along for the ride

Then we grinded through the whole night. Final tally: fifty minutes of sleep and ten-plus Red Bulls across the hackathon. I do not think I can top that myself. The fifty minutes were pure exhaustion, and I still do not know how my brain managed to switch off after that much Red Bull, but it did.

3am, still going
3am, still going

And then the morning did something I still cannot quite believe. We were deep in the submission window, the part where you are meant to be polishing and double-checking everything, and our AMD machine started acting up. It was slow, it was handing back results that made no sense, and none of it lined up with what we were actually running. So we started digging, and after a while we found the reason: someone had a crypto miner running on it. On our unit. In the middle of the hackathon we were trying to submit to. I honestly did not know whether to laugh or scream. It is one of the most random, stupid things that has ever happened to me at one of these, and trying to wrap your head around something like that on fifty minutes of sleep is its own special kind of pain. Your brain is just not built for it.

So instead of spending those last hours making the demo nicer, we spent them cleaning up the machine, killing the miner off, checking our outputs still made sense, and basically holding the whole setup together with both hands long enough to get the submission in.

The strongest generative result we landed was an outline-only Centroid Diffusion model at FID 44.8, trained from scratch on a single AMD MI300X. A benchmark number convinces nobody in a live room, so we shipped an interactive site too: a judge draws a shape, watches a floor plan appear. That was the thing projected on the wall when it counted.

Home, and the result

We got the submission in with basically no time to spare, and honestly, after the weekend we had just had, that alone felt like a win. A day earlier I had been standing outside a parking garage wondering whether we would even get to compete, so "we actually submitted something we are proud of" was more than enough for me by that point.

We did not find out how we had done right away, so instead of hanging around we did the only sensible thing and went to the Eiffel Tower to sit with some wine and do absolutely nothing. No agenda, nowhere to be, nothing left to fix. Just the four of us, tired in the good way, watching Paris be Paris.

winding down near the tower
winding down near the tower
the tower itself
the tower itself

The next morning we had one last Paris breakfast before piling back into the car for the drive home.

the last paris breakfast before the drive home
the last paris breakfast before the drive home

The result came through a few days later. After the leaderboard review it was official: first place, and 500 EUR. And it was a great feeling, I will not pretend otherwise. But if I am being honest, the thing I am proudest of is not really the placement. It is that we had a weekend where just about everything that could go sideways did, two hackathons at once, our laptops locked in a garage, almost no sleep, a crypto miner turning up on our own machine at the worst possible moment, and we just kept going anyway and shipped something good at the end of it. That is the part I will remember.

Leaving Munich for an event this big hit differently than I expected. The venue was great, the amenities were great, the whole place was easy to spend a few sleepless nights in. I want to do more hackathons outside Munich now, if only to travel and hang out with teammates like this again.

I cannot rank this one against the last three, and I am not going to try. But it has a special place in my heart, and so does Paris.

Cheers.

filed: JUN 2026Repository