Update (June 2026): The global results are in - RepoRadar took 2nd place worldwide out of 302 teams and ~1,400 builders across 17 cities. The only entry ahead of us was a solo builder in Monterrey with a genuinely incredible voice-driven broadcast overlay agent. Full announcement from AI Tinkerers here.
On Saturday May 9, 2026, I walked into AI Tinkerers SF with nothing on the docket except a vague itch about software discovery. Four hours later I walked out with a deployed product, two new friends, and a working demo that survived a live judges’ run.
The hackathon was the Generative UI Global Hackathon, presented by AI Tinkerers, Google DeepMind, CopilotKit, Manufact, and LangChain. The bar the organizers set was sharp: would this have been impossible with a chat interface? If your demo could’ve been a chatbot, you didn’t make the cut. That single question shaped every decision we made.
We called the project RepoRadar. Live at reporadar.io. Source at github.com/RepoRadar/reporadar.
#What we built
Developers discover tools across GitHub Trending, Hacker News, X, launch posts, and README skimming. Even after finding a promising repo, you still lose hours on setup before you know whether the thing is actually useful. RepoRadar compresses that loop into: tune taste, compare repos, deploy a working surface.
The home screen is a multi-modal taste editor that re-ranks GitHub at 60fps. Five inputs all bind to the same internal weights vector:
- A draggable decagon “Street Fighter character stats” hex - drag a vertex outward to weight that axis
- Ten weight sliders in the sidebar, top three visible by default
- A click-order sort priority bar across ten dimensions
- Five popular topic chips and a free-text search box with a topic-then-keyword-then-all-time fallback
- A CopilotKit chat agent that can call
rankReposwith any combination of the above
Sliders, hex, and chat are bidirectionally bound. Move one, the others animate to match. Click a repo card and the weights snap to that repo’s 10-dimensional profile so you can see what kind of taste produces it.
Then there’s the trick the hackathon actually rewarded: the Deploy button. Click it on any repo card, and a Gemini-driven agent decides what kind of interactive surface would best demonstrate that specific project - playground, dashboard, control-panel, wizard, widget-grid, or reader - and emits a JSON document describing it in A2UI, Google DeepMind’s agent-to-UI protocol. Our renderer mounts that JSON at <slug>.reporadar.io from R2. Each deploy gets its own D1 database, so the Submit, List, and Counter primitives are real: type in a field, hit Save, the data persists, the list refreshes. Different repos get different working micro-apps. A chatbot can describe a repo. RepoRadar lets you use it.
#How the protocols stack
The hackathon shipped four protocols with sponsors behind each one. We used all four:
- A2UI (Google DeepMind) is the output schema for every deployed surface. Gemini emits A2UI JSON, our vanilla-JS renderer maps the subset (Layout, Container, Heading, Text, Button, TextField, CheckBox, Slider, List, Tabs, ProgressBar, Counter, Image, Code) to live DOM. We extended it with interactive primitives so
action="submit"collects sibling fields and POSTs to D1. - AG-UI (CopilotKit) is how the agent and the UI share the same surface. Our
useCopilotAction("rankRepos")anduseCopilotAction("deployRepo")flow through AG-UI events between the Next.js client and CopilotRuntime. - CopilotKit is the React framework on top - the provider, the chat dock, the action hooks, and the GoogleGenerativeAIAdapter driving the loop.
- MCP Apps (Manufact / mcp-use) ship in
workers/mcp/. RepoRadar exposesrank_reposanddeploy_variantas MCP tools, hosted via Streamable HTTP/SSE, with a local stdio entry for Claude Desktop. The same rank-and-deploy flow runs from any MCP client, not just the website.
LangChain and Daytona are not in the four-hour build. They fit the next milestone: deeper multi-source research with memory, and Daytona sandboxes so users can run a repo’s examples before touching their own machine.
#The four-hour stack
- Next.js 16 with App Router, React 19, Tailwind 4, TypeScript
- CopilotKit 1.57 for the agentic frontend
- Gemini 2.5 Flash via
@google/generative-aion the Next.js side and Gemini REST on the workers side - Octokit for GitHub
- Cloudflare Workers - apex Next.js via
@opennextjs/cloudflare, plus areporadar-deployworker that Geminis-up the A2UI and writes R2 + D1, plus areporadar-serveworker that handles*.reporadar.iotraffic - D1 for the deploys registry, per-slug records, per-slug counters
- R2 for the A2UI JSON per deploy
- Resend for the optional email-on-deploy-complete
A custom SVG decagon with pointer-event drag handles, ten heuristic scoring functions, multi-tier topic-to-keyword GitHub fallback so weird queries like “a podcast platform” still surface something useful. None of it is exotic. The unlock was knowing exactly which protocol does what, picking the smallest possible model for each call, and refusing to ship anything a chatbot could’ve done.
#The teammates
I went in solo. I came out with collaborators I’d ship with again tomorrow. Craig Latta and Priyanshu Harshbodhi walked over, asked what I was building, and within the hour we’d divided the work cleanly across the agent, the surface, and the deploy pipeline. We finished four hours later with timestamped commits and a working demo. Real teams don’t always come from real org charts.
#How to grab it
The repo is public and MIT-licensed at github.com/RepoRadar/reporadar. I’d love help on any of this:
- File issues for repos where the radar mis-ranks something - the heuristic for the ten dimensions is in
app/lib/scoring.tsand lives to be tuned - Submit pull requests if you want to extend the A2UI subset, add a new form factor for deploy outputs, or wire in a new discovery signal (Hacker News, Product Hunt, launch posts)
- Open feature requests for surfaces you’d like Gemini to learn to emit
- Fork it and build a better version - that’s how this gets better
If you want to talk through an enhancement before you start, send me a message. And if you’re building in this space, I want to hear about it.
Let’s go!