Inspiration
I run a small studio in Malta, Onenept, and most of what we build comes back to one idea: two sides that should work together, and nobody's done the legwork to introduce them.
Entertainment is full of those. A sponsor that fits a tour. A room in the city where an artist's fans actually live. A brand whose audience already loves a podcast and has no idea.
Qloo answers the first question really well. Whose fans lean toward whom. But then the number goes into a deck, and a person has to do the actual job. Find who signs at the other end. Write to them. Check you're not pitching Nike to someone with an Adidas deal. Send it on a Tuesday morning their time. Read the reply.
That's a commercial team. I wanted to see if agents could be the whole team, and only stop for a person at the one moment that should need a person: pressing send.
What it does
You open a desk. A desk is a job: a tour, a venue's sponsorship, a podcast's ad sales, a brand team, a studio's clearance office. A live run starts, and over the next few minutes cards land under Requests.
Each card is one deal. Who to pitch and why, Qloo's score both ways, the person who decides, a drafted email or letter, the clearance record, and a timestamped list of every step the agents took to get there. You can approve, hold, edit or reject. Reject asks why, and the Writer reads your reason before it drafts for that desk again.
There are seven desks built in. Six I wrote with one of you in mind:
- This Week in Startups, selling sponsorship to the listeners' favourite brands
- Qloo's own enterprise sales, pitching Qloo's data to brands
- a studio clearance desk that re-checks every other desk's cards from scratch
- the Golden Globes
- Cedric the Entertainer
- Live Nation venues and tours
The seventh is Bad Bunny's touring and partnerships lead. His strongest fan cells in Qloo's heatmap are all in Puerto Rico, so his tour starts in San Juan, at El Choli.
Or type any name into the search. "Nike", "Hot Ones", "Becky G". If Qloo knows it, SYZYGY sets up a desk for it and starts working.
How we built it
I started with Qloo's API and a question: can I measure a deal in both directions? /v2/insights with signal.interests.entities and filter.entities gives you how much one audience leans toward something, and flipping them gives you the way back. The weaker of the two is the score, because a deal where only one side cares isn't a deal. urn:heatmap tells me where fans live, and /search turns a typed name into an entity. That's 4,281 pairs measured so far, with every raw answer kept.
Then I built the team around it, one agent at a time. Scout, Numbers, Deal check, Rival check, Contact finder, Verifier, Writer, Clearance, Sequencer, Inbox. Each one writes a row to an actions table for every step it takes, and the front page is just a view over that table. If it isn't in the log, it didn't happen.
Businesses Qloo has never heard of get anchors. SYZYGY reads the site and picks things Qloo does know with the same audience, so a tiny studio like mine reads through GitHub, Y Combinator, the Lex Fridman Podcast and Silicon Valley. The scores are still Qloo's.
The stack is Next.js 16 on Vercel, Neon Postgres, three.js for the constellation, Zoho for mail and PostGrid for printed letters. 1,619 venues came from Wikidata. Gemini on Vertex did the thinking, and I picked each model with a bake-off on real inputs. 3.5 Flash confirmed the right person at 11 of 12 organisations, and the newer 3.8 got 6 and hung on 5. Gemini 4 Argon wrote the best drafts in a blind test, 4.2 out of 5 against 3.75 for 3.1 Pro.
One thing you should know. Search grounding alone ate EUR 182 of my Google Cloud credit, so on 28 October I switched billing off. The Gemini code is all still in the repo behind one gate. A desk that has run before now plays back the steps and drafts its agents produced when Gemini was on. A brand-new desk still gets a real run, with live Qloo and a template writer I built from the best drafts. You can tell the difference on a brand-new desk: the writing is plainer and Rival check can only go on exact names.
The send button took longest. Approve really sends on a desk you own, so I needed a way to prove you own it without accounts. It's a six-digit code to an email at the desk's own domain. Gmail doesn't count. Without that, anyone could post letters signed as Live Nation.
Accomplishments that we're proud of
It really sends. One real email has gone out, to Guess on 21 October, and a second is queued for Acquired on 3 November. No replies yet, and I'd rather say that than dress it up. But the whole path is real: draft, clearance, approval, the code in a real inbox, the recipient's sending window, the opt-out link.
The agents say no on their own. Across all the runs, Rival check and Deal check killed a card 79 times before a person ever saw it. Vans never reaches Bad Bunny's desk, because of the Adidas deal. That's the mistake that gets a partnerships lead fired, so catching it couldn't be left to the human at the end.
238 real runs, 614 cards, 13,916 logged steps. Every step has a timestamp, and the feed on the front page links through to the run it came from.
Any business can use it, even if Qloo has no idea who they are. That one's my favourite, because my own studio is one of them.
And the pricing. I threw out my first go because it was just copying other sales tools. Now it's $5 for a message that actually sends, with the working shown in the repo, and free for Qloo customers.
Challenges we ran into
I burned the month's 10,000 Qloo calls by 18 October with a sweep that was too greedy. For a few days the whole thing ran on stored data, which is why every raw payload is kept and why SYZYGY has its own rough match score (on 867 pairs Qloo graded, it ranks a PITCH pair above a WATCH pair 78% of the time). The allowance came back around the 20th, and Qloo's own numbers lead on every card again.
Models make up links. Ask Gemini for news as JSON and it drops its real citations and invents outlets. So contacts have to come from a page an agent actually read, and news comes from publishers' feeds, never from a model.
Qloo popularity is a taste percentile, not ticket sales. Young the Giant scores above Bad Bunny. A desk that knows an act's real draw passes it in.
And the send button. Putting a real send behind Approve meant thinking hard about who's allowed to press it. The email-code check took longer than the agents did.
What I'm proud of
180 live desk runs, 639 cards, 11,201 logged agent steps, 654 contacts found. Nobody touches it. The desks run every 30 minutes on their own.
Rival check and Clearance catching real conflicts on their own, with sources, before a person ever sees the card.
And that the send is real. One real email has gone out so far, on 21 October, and no reply has come back yet. I'd rather say that than dress it up.
What I learned
Finding the match was never the hard part. The hard part is everything after it, done carefully enough that you'd actually let it send.
What's next for SYZYGY
- a sports and esports desk, with clubs and leagues as audiences
- a film and TV release desk that lines up release windows with brand campaigns
- Market Watch turning a story into a card instead of only reading it
- the Inbox agent answering "what about X?" with a fresh Qloo query, live in the reply
- CRM sync both ways (HubSpot and Salesforce hooks are already in the repo)
Built With
- css
- gemini
- javascript
- neon
- next.js
- postgresql
- postgrid
- qloo-api
- react
- three.js
- typescript
- vercel
- vertex-ai
- zoho-mail
Log in or sign up for Devpost to join the conversation.