About the project
Inspiration
Every trademark fight asks the same question first: who are the customers? Do the same people buy both brands? Is the older brand famous with the general public? Where is it actually known? Today the answer is a consumer survey: $15,000 to $100,000 and weeks to two months, commissioned long before anyone knows whether the case is worth it.
Qloo's taste graph already holds that answer for 250 million entities: which brands the same people like, how evenly a brand is liked across ages and genders, and where its fans live. We built the agent that turns that into evidence a lawyer can use.
Why "Tea Rose". In 1916 the US Supreme Court decided a fight between two flour brands that both used the name "Tea Rose" in different parts of the country (Hanover Star Milling v. Metcalf, followed by United Drug v. Rectanus in 1918). The rule that came out of it, the Tea Rose doctrine, says an unregistered mark is protected only where its customers already know it: a brand's rights reach as far as its reputation, and no further. That is a question about people, not paperwork, and it is exactly what a taste graph can answer. The affinity map on every case page, showing where a brand's fans actually are, is the Tea Rose doctrine drawn out. To a trademark lawyer the name says what the tool is about; to everyone else it reads as a product.
Qloo's taste graph already holds that answer for 250 million entities: which brands the same people like, how evenly a brand is liked across ages and genders, and where its fans live. We built the agent that turns that into evidence a lawyer can use, and named it after the Tea Rose doctrine, the hundred-year-old rule that an unregistered mark is protected only where its customers already know it.
What it does
Paste a filed complaint (or the complaint plus the defendant's answer). About two minutes later you get a case page with four layers:
- The three customer questions, answered from Qloo. Do the same people buy both? Where each brand ranks among the other's fans, checked in both directions (the related-goods and same-buyers factors of likelihood of confusion). Is it famous with everyone? How evenly the older brand is liked across demographics and how far its reach extends (the threshold for dilution). Where is it actually known? An affinity map of the regions where the brand's fans are (the Tea Rose doctrine, drawn out).
- A preliminary read of the whole case. Which way it leans (the older brand, the newcomer, or too close to call), how confident, what the case hinges on, the strongest defence, and what could flip it. The court's decision is never in the agent's input.
- A neutral memo for counsel, the same for both sides, with every number traced to a logged Qloo query in the appendix, and a fixed list of what the data cannot tell you.
- A live trace of every decision the agent made and every Qloo call it ran.
Eighteen real cases are pre-computed on the site (Jack Daniel's v. Bad Spaniels, Hermès v. Rothschild, Vans v. MSCHF, Nike v. StockX and more), each read from the pleadings with the decision withheld, and each shown next to what the court decided.
What makes it Qloo-powered
Without Qloo there is no number in this product. The agent reads the pleadings, but the customer evidence comes from Qloo's brand affinities, audience comparisons, demographic breadth and heatmaps. An LLM alone can say "whiskey drinkers and dog-toy buyers probably overlap"; Qloo says where Bad Spaniels ranks among Jack Daniel's fans and vice versa, and the agent turns that into a percentile a court can weigh.
When Qloo does not know a brand (small companies often), the agent picks three stand-in brands from the category, from a shortlist code builds by popularity, decides whether the category is close enough to compare at all, and says so in the memo. The opponent is never a stand-in: code removes it before the model sees the list.
We also checked the measure itself: on 80 decided cases, labelled from the opinions before any data was pulled, Qloo's overlap score ranks the court's "related goods" case above the "unrelated" one in 88 of 100 random pairs.
How we built it
An eight-step LangGraph pipeline. The model decides what to measure; code decides the number.
- Extract: the model reads the pleadings (parties, marks, goods, claims).
- Route: the model decides which analyses the dispute calls for (dilution pleaded means fame is measured).
- Resolve: the model finds each brand in Qloo, or picks stand-ins from a code-built shortlist.
- Fetch: the agent calls Qloo, retries wider when a query comes back empty, logs every call.
- Score: tested Python computes ranks and percentiles; no model, never a raw affinity score.
- Interpret: the model turns scores into the factors a court weighs and names what is thin.
- Assess: the model gives the preliminary read, without the court's decision.
- Memo: the model writes the prose; code writes the bottom line and the query appendix.
FastAPI backend, React frontend, one Docker container on a Raspberry Pi 5 behind a Cloudflare Tunnel. Every run records its Qloo queries, its LLM token usage and its cost.
Challenges we ran into
- Qloo coverage for small brands. Half the defendants in real cases are not in the graph. The stand-in path, and saying plainly when a category is only a partial proxy, took longer than any other part.
- Keeping the model away from the numbers. Early versions let the model quote affinity scores; now every number is computed in code and the model only interprets positions in a list.
- An honest read. The agent is cautious by design: with only the plaintiff's side on the record its confidence is capped at low, and with both sides in it tends to call the fight too close rather than guess. We tested stronger models and maximum reasoning effort; the reads got better-argued, not braver. That is the right behaviour for a first read, and we say so on the site.
Accomplishments that we're proud of
- Eighteen real cases read blind and shown beside the court's outcome, with the misses as visible as the hits.
- A back-test of the audience measure against 80 decided cases, pre-registered from the opinions.
- A memo a lawyer can hand to the other side: neutral, sourced, with a limitations section that never gets shorter.
- Two minutes and about 20 cents per case, against weeks and five figures for a survey.
What we learned
Taste data is evidence of related goods and shared buyers, not of confusion. The product only works because it says what it cannot tell you: whether the marks look alike, whether anyone was actually confused, how careful the buyers are. Those stay with the lawyer.
What's next
Region names under the map, a braver read as an explicit setting, re-running the back-test with better and different models and more pleadings bundles with the defendant's side on the record.
Built With
- docker
- fastapi
- langchain
- langgraph
- openai
- python
- qloo-api
- raspberry-pi
- react
- typescript
- vite
Log in or sign up for Devpost to join the conversation.