LDBD
/
All posts

Branding a SaaS Without a Designer — Ten Logo Rounds with AI

I iterated on the logo more than ten times, rewrote the landing copy in a sharper tone, and ran a cross-check with another AI. A non-designer’s build log of using Claude and ChatGPT as design partners to shape LDBD’s first impression. AI didn’t quietly finish the design on its own.

The previous post covered how ops can start before the users arrive — the traffic, SEO, and cost side. This post is the visual work I separated out from that one.

I rebuilt the landing page, designed the logo from scratch, and settled on a color system. The catch was that I'm not a designer.

Hiring one wasn't in the cards at this stage either. But leaving the template alone wasn't an option — the landing page felt empty enough that a first-time visitor might wonder, “Is this actually a real service?” So I decided to use Claude and ChatGPT as design partners.

Over a month, I iterated on the logo more than ten times, rewrote the landing copy from scratch three times, and even ran a cross-check with a different AI. The main thing I learned through all of it: AI didn't quietly finish the design on its own. The more clearly I could put what I wanted into words, the faster the AI brought back the next iteration.

Looking back, the point wasn't that AI can draw an SVG I can't. The point was that I had to be able to look at that SVG and say, “That doesn't look like a crown.” This post is the record of five scenes that led me to that conclusion.

1. Landing copy — “stop explaining, provoke”

By “provoke” I don't mean adding edgy phrasing for shock. I mean hitting the unease users already feel, head-on.

The first thing I touched was the Hero (the big top area of the landing page). The first version Claude Code generated looked like this.

How well can you predict asset price direction?

Predict whether stocks, ETFs, and crypto will go up or down, and compare your skill with other people and AI.

Nothing wrong with it. But you read it and the only thing you walk away with is “okay, so that's what this is.” Nothing sticks. No reason to hit the sign-up button. Classic explainer copy.

The more I thought about it, the real problem LDBD addresses was different. The phrases you keep hearing in stock and crypto communities — “I knew this was going to moon,” “I told you Bitcoin was going to dump.” They all come out after the fact. No evidence. LDBD pins those calls to a timestamp. A public prediction goes up, and a few days or weeks later it gets graded automatically.

So I pulled the copy in that direction.

You called it? Prove it.

The leaderboard doesn't lie.

The CTA button changed too, from “Start for free” to “Prove yourself.” Sharp, but it fits exactly what LDBD is trying to do.

Next I tore up the section right below the Hero. The original was “Three steps to participate,” walking through the features. More explainer copy. I replaced it with a Before / After structure.

On the left side, I put “Sound familiar?” above two speech bubbles — “I knew Tesla was going to rip!” / “I told you Bitcoin was going to crash…” Under that, one line: “No record. No proof. Just talk.”

On the right side, what LDBD provides — “Public predictions. Timestamps. Automatic verification.” Under that: “No editing. No deleting. No excuses.”

The tone is sharp, but the problem LDBD addresses is literally “people changing what they said after the fact,” so the sharpness fit.

The stats banner got the same treatment. At that point LDBD had 603 assets and 124,709 verified predictions accumulated. A plain version would read “603 assets / 124,709 predictions,” but I tacked one more thing on the end — “0 excuses left.” That one line set the site's tone.

This whole pass wasn't something AI proposed first. I picked the direction — “less explanation, more provocation” — and had AI generate several phrases that fit that tone, then picked the ones that best matched LDBD and refined them. Left to itself, AI would've circled around “Predict the market.” Setting direction was on me every time.

2. Logo — it didn't come out right the first time

With the copy settled, the next thing was the logo. I started with just one line — “Make me a logo for LDBD.” Claude came back with four concepts in SVG: up/down arrows piercing the letters (A), a bar chart whose heights rise like a crown (B), green and red brackets around the letters (C), and a digital scoreboard typeface (D).

My first reaction was this.

Concept B is okay but the chart doesn't really read as a crown. C's bracket design isn't great, but the minimal + tagline tone is good.

That set the direction for the next round — keep B's “chart-as-crown” concept, fold in C's minimal + tagline tone. The chart-and-crown combo also fit LDBD's identity, since the service comes down to scoring predictions and ranking them.

From there, I went round after round: bumping up the crown peaks, layering a crown outline over the chart bars, aligning the peaks to the centers of bars 1, 3, and 5, and normalizing the bar opacities. A typical mid-round piece of feedback looked like this.

K and L look good, but the outline doesn't connect cleanly.

The two ends of the crown were diagonals so it didn't read like a crown, and the peaks were offset from the bars. After fixing those, the alignment locked in — but a new problem appeared: the gold crown outline disappeared where it crossed over the middle green bar.

My first guess was an SVG z-order issue (the drawing order — in SVG, elements listed later in the code render on top). I figured drawing the crown after the bars would clear it up. Swapping the order made no difference.

I screenshotted the result and showed Claude. The issue turned out to be something else.

It's not a z-order problem, it's a contrast problem. The gold line (#F59E0B) and the green bar (#10B981) sit at similar brightness, so the line visually melts into the bar where they overlap.

The fix was a kind of halo technique. Draw the same line twice — first a thick white stroke as a backing, then the thinner gold stroke on top. In code it's two overlapping paths; visually, the crown stays sharp and intact as it crosses the bar.

The final version (M2): five chart bars in emerald green, a gold crown outline with a white halo over them, three jewel dots at the peaks, and a soft gold fill inside the crown. The tagline is PROVE YOUR PREDICTION. The favicon (the small icon in your browser tab) is the same mark scaled down on a dark background.

Here are the steps it took to get there, in one figure.

The real lesson here isn't the number of rounds. What I actually did in every round was put what I wanted into words. Concrete feedback like “doesn't look like a crown” or “this line looks broken here” went in, and AI came back analyzing the real cause and proposing the next version. Ten rounds isn't AI hitting a ceiling; it's just what design work seems to be. I haven't worked with a human designer, so I can't say for sure, but I suspect a human designer goes through a similar back-and-forth with their client.

3. Color system — green is up, red is down

Settling on a color palette came naturally out of the landing and logo work. The starting point was shadcn/ui's default theme (mostly neutral grays), but for a service centered on asset prices, color had to do more active work. I ended up with four colors.

  • Emerald green — up, primary CTA, success states
  • Rose — down, error states
  • Amber / gold — ranking, crown, achievements
  • Deep navy — dark backgrounds, favicon

The single biggest visible change was the CTA button. It was black before; switching it to emerald green naturally pulled attention toward it on every page.

The harder call was the up/down color mapping. The Korean market conventionally uses up = red, down = blue, while the US and most global markets use up = green, down = red. LDBD covers Korean assets too, but the target audience is global, so I went with the US convention (up = green). It'll feel slightly off to some Korean users, but I prioritized the mapping most international users would parse immediately.

Once a palette is set, it propagates through every component (buttons, badges, charts, logo, dark mode) in the same tone. Without a designer in the loop, locking “these four colors only” into the system was about the only way a non-expert could keep things consistent at scale.

4. Use a Second AI to Catch Blind Spots — the ChatGPT Cross-Check

Once the landing page was in decent shape, I tried something. I dropped the site URL into ChatGPT and asked, “What would you improve here?” When you keep refining inside the same AI, blind spots build up. Show it to a different AI and those blind spots surface at once.

ChatGPT came back with nine suggestions in total. I didn't accept all of them — I sorted them into three buckets: “already done / a good fit for us / not a good fit.”

Four I accepted:

  • Add a prediction-card mockup to the Hero — “shows what the service does in three seconds.” Saves the copy from having to do all the work. This was the single highest-impact suggestion.
  • Reframe the leaderboard heading as a challenge — ChatGPT's original was “Can you beat the baseline?”, but “baseline” is jargon for non-developers. I shortened it to “Can you beat #1?”, which works regardless of whether #1 is a person, an AI bot, or a baseline bot.
  • Split the bottom CTA in two — under a “Humans and AI alike” framing, two buttons: [Start as human] / [Connect an AI bot]. Makes it visible on one screen that LDBD targets both human users and bot operators.
  • A “Free · not real trading” badge near the Hero — on a prediction site, first-time visitors can assume “wait, do I have to put real money in?”, and the badge cuts that worry off up front.

Three were already in place, so I filtered them out: splitting the stats into three cards; turning the “Sound familiar” section into speech-bubble Before/After; and a more provocative “Call it. Prove it.”-style Hero copy. That last one was a new suggestion from ChatGPT's side, but our Hero was already at “You called it? Prove it.” — essentially the same direction. Seeing these items come up in the cross-check was useful as confirmation that the direction was right.

Two I rejected:

  • Switch “How it works” to a three-step timeline— we'd already torn that section up once into the Before/After structure. Changing it again would have made the page feel inconsistent and confused users.
  • Rebuild the logo as “candlestick chart + checkmark + timestamp” — the chart + crown logo we landed on through rounds 1 to 5 fit LDBD's identity (ranking, proof) better.

The lesson from this step was simple. Cross-checking is powerful, but accepting every suggestion breaks consistency. Sometimes the AI's suggestion is objectively better; sometimes the AI just doesn't know your situation. Telling the two apart is the operator's job.

5. Bot API page — AI is better at spotting what's missing

The last scene isn't strictly branding work, but in the “use AI as a reviewer” sense it's the same flow as the ChatGPT cross-check.

The /bots page is the API documentation developers reference when building a bot. Once I'd written most of it, I asked Claude, “Look over the /bots page,” and it pointed out things I'd left out.

  • No response JSON examples for each endpoint, so developers couldn't tell what they'd get back from a call
  • No explanation of submission timing (the dormant window, the rules around market close/open)
  • No end-to-end bot example — only one-shot call samples

It pointed out six things, and I took all six. Added:

  • Actual response JSON examples on every endpoint
  • A “Note on timing” info box — what happens with US markets closed / open / crypto (24/7)
  • A full RSI-based prediction bot — paste it, fill in the env vars, and it runs
  • And one motivational line at the bottom — “Watch yourself lose to a bot that just hits ‘up’ every day.”

The point isn't that I accepted all six. It's the step before that. When I write a page myself, my eye stays on what's already there. I tweak phrasing, fix code indentation. AI does the opposite — it compares the page against an internal model of “what this kind of page should cover” and surfaces the gaps. That's one place where I'm weak and AI is strong.

Since then, I've made it a habit to ask one last question whenever I finish a new page: “What's missing here?” It comes back with two or three new items almost every single time.

Wrap-up — the job of saying what I actually want

Five pieces of work in a month. I rewrote copy in a sharper tone, iterated on the logo more than ten times, settled a color palette, ran a cross-check against another AI, and filled in missing documentation. Instead of hiring a designer, I had Claude and ChatGPT in that role.

AI did plenty in that role. It drew four logo concepts as SVG in one shot, generated the next round of variants quickly, and diagnosed the real cause behind “why does this look broken?” to suggest the halo fix. Even so, it didn't quietly finish everything on its own. In every round, someone still had to say “doesn't look like a crown,” “this line looks broken here,” “this suggestion doesn't fit us,” for the next iteration to appear. The more concrete that input, the better the next iteration got.

So when AI can generate design artifacts, the non-expert's real job seems to be figuring out exactly what they want and putting it into words for the AI. The interesting bit isn't that AI can draw an SVG I can't. It's that someone has to be able to look at that SVG and say “that doesn't look like a crown.” That role doesn't require a design background. Honestly, the product operator may fill it best, because nobody knows the product's intent better than the person building it.


If you want to see LDBD directly, sign up from the main page. If you want to plug in your own bot, start in /settings — create an identity and an API key. It's free to use.

vibe-codingdesignbrandingai-collaborationlogolanding-pageclaudechatgpt