Catch UI bugs before they merge.

Rams reviews your pull requests and flags UI issues that reduce conversion, break accessibility, and create design-system drift — before they ship.

Free for public repos. No credit card. Works on your first PR in minutes.

<button className="px-6 py-3 text-white rounded-lg border border-neutral-700">Learn More</button>
<img src={user.avatar} className="w-10 h-10 rounded-full" />
<div className="grid grid-cols-3 gap-4">
  <Card title="Active users" value={1247} />
  <Card title="Sessions" value={3892} />
  <Card title="Conversions" value="4.2%" />
</div>
<input type="email" placeholder="you@company.com" className="px-4 py-2 bg-neutral-900 rounded" />
<nav className="flex items-center gap-6">
  <Link href="/pricing">Pricing</Link>
  <Link href="/docs">Docs</Link>
  <Link href="/login">Sign in</Link>
</nav>
<dialog open className="fixed inset-0 m-auto rounded-2xl bg-neutral-900 p-8">
  <h2 className="text-2xl font-semibold">Confirm deletion</h2>
  <p className="mt-2 text-neutral-400">This cannot be undone.</p>
  <div className="mt-6 flex justify-end gap-3">
    <button onClick={onCancel}>Cancel</button>
    <button onClick={onDelete} className="bg-red-500 text-white">Delete</button>
  </div>
</dialog>
<table className="w-full text-sm">
  <thead><tr><th>Repo</th><th>Score</th><th>Issues</th></tr></thead>
  <tbody>
    {rows.map(r => <tr key={r.id}><td>{r.repo}</td><td>{r.score}</td><td>{r.issues}</td></tr>)}
  </tbody>
</table>
<form onSubmit={handleSubmit} aria-label="Sign up form">
  <label htmlFor="email">Email</label>
  <input id="email" name="email" required />
  <button type="submit">Sign up</button>
</form>

Scored repositories

Every public repo Rams has reviewed. Worst scores first — there's usually something interesting in the gap between great craft and great accessibility.

On every PR, Rams reviews your design.

Accessibility, typography, color, spacing, components, motion, hierarchy, and UX — checked on every pull request, with inline fix suggestions you can accept with one click. No extra step, no context-switching.

rams-design-review bot
acme/web-app #42 · Update pricing page
3 issues · 1 critical

Design Review — 3 issues found

Score: 47/100 · Risk level: High

Two filled CTAs split focus — primary action is ambiguous·UX

The hero has "Get Started" and "Learn More" both styled as filled white buttons at the same size. Two primary-weight buttons in the same row is not a hierarchy.

Impact: Users can't tell which is primary → conversion drops on the page's most valuable click.

Fix:Use a single filled CTA for the primary action; demote secondary actions to ghost or text-link style.

Suggested change
<button className="px-6 py-3 text-black bg-white rounded-lg">Learn More</button>
<button className="px-6 py-3 text-white rounded-lg border border-neutral-700">Learn More</button>

Stat values use hardcoded hex — bypasses the design system·Design System

The +12% indicator uses style={{ color: '#22c55e' }} inline, hardcoding a color that should live in tokens.

Impact: Theme updates and dark-mode passes silently miss these values → product drifts visually as the system evolves.

Fix:Replace inline hex with a semantic token class like text-emerald-500.

Suggested change
<span style={{ color: '#22c55e' }}>+12%</span>
<span className="text-emerald-500">+12%</span>

Feature grid cards are visually identical — no entry point·UX

All six feature cards share identical weight, color, and spacing. Nothing draws the eye to any single card.

Impact: Users scan headings without absorbing content → the grid reads as a wall and the strongest claim never lands.

Fix:Vary one card's scale or treatment to create a focal point, or order by importance with the strongest claim first.

Fix before merging to avoid accessibility issues and UX regressions.
Rams · Automated Design Reviews

Your team is shipping UI faster than it's being reviewed.

AI tools and fast iteration make it easy to ship product — and easy to ship confusing, inconsistent, or inaccessible UI. Most teams don't have a senior designer reviewing every pull request. Issues slip through and compound over time.

The UI issues your team misses when shipping fast

Hierarchy

Multiple CTAs compete → users don't know where to click

Two primary-weight buttons in the same row, no visual ranking, no clear next step. The conversion click is split between actions that look identical.

Accessibility

Low contrast and missing labels → broken UX for real users

Sub-4.5:1 contrast on body text, missing alt attributes, sub-44px touch targets, focus rings suppressed without replacement. Screen readers and keyboard users get a half-broken page.

Design-system drift

Hardcoded hex and one-off spacing → product becomes inconsistent

Inline style colors that bypass tokens, padding values outside the spacing scale, !important overrides on system components. Theme changes silently miss these.

AI patterns

Generic gradients and templated layouts → product looks AI-generated

Purple-to-pink gradients, glow shadows, vague hero copy, identical filled buttons. The output of unedited prompts.

UX correctness

Broken states and duplicate handlers → UI behaves incorrectly

Submit buttons with no disabled state, double-fired onSelect+onClick, clickable spans without keyboard support, missing loading states.

Motion

Unscoped transitions and no reduced-motion guard → janky UX

`transition: all` watches every CSS property on every render. Animations without `prefers-reduced-motion` violate WCAG 2.3.3 and unsettle users on the move.

Trained on how senior designers actually review code

109 rules across 8 categories — accessibility, color, typography, spacing, components, UX, motion, and AI-generated patterns. Not linter rules. Review judgments.

Alt textFocus indicatorsTouch targetsContrast ratiosKeyboard navScreen reader labels
Alt textFocus indicatorsTouch targetsContrast ratiosKeyboard navScreen reader labels
Color tokensOne gray scaleDark modePalette limitsSemantic colorsContrast on backgrounds
Color tokensOne gray scaleDark modePalette limitsSemantic colorsContrast on backgrounds
Type scaleFont smoothingTabular numsLine-heighttext-balanceLetter spacing
Type scaleFont smoothingTabular numsLine-heighttext-balanceLetter spacing
Spacing scaleBorder radiusOptical alignmentGap over marginz-index scaleConcentric radii
Spacing scaleBorder radiusOptical alignmentGap over marginz-index scaleConcentric radii
Loading statesForm validationHit areasButton semanticsInput font sizeEmpty states
Loading statesForm validationHit areasButton semanticsInput font sizeEmpty states
prefers-reduced-motionInterruptible transitionsScale on pressExit animationsNo blur > 20pxEasing
prefers-reduced-motionInterruptible transitionsScale on pressExit animationsNo blur > 20pxEasing
No gradientsNo glowNo transition:allVisual monotonyNo placeholder textisolation:isolate
No gradientsNo glowNo transition:allVisual monotonyNo placeholder textisolation:isolate
Accessible primitivesComponent reuseDesign tokensVariant patternscn() conditionalsTypeScript props
Accessible primitivesComponent reuseDesign tokensVariant patternscn() conditionalsTypeScript props
Scroll-margin-topSafe area insetsImage outlinesShadows over borderswill-change usageNo ease-in
Scroll-margin-topSafe area insetsImage outlinesShadows over borderswill-change usageNo ease-in
Input font sizeNo dead zonesCheckbox labelsCmd+Enter submitCurly quotesEllipsis char
Input font sizeNo dead zonesCheckbox labelsCmd+Enter submitCurly quotesEllipsis char
Concentric radiiScale on pressTheme transitionsTransform originNo scroll animationsStagger reveals
Concentric radiiScale on pressTheme transitionsTransform originNo scroll animationsStagger reveals
Tabular numstext-prettyFont familiesWeight hierarchyLine clampTruncation
Tabular numstext-prettyFont familiesWeight hierarchyLine clampTruncation

A design skill file gives advice. Rams runs reviews.

Keep your design prompts. Rams ensures your product actually follows them.

Free skill file

  • Has to be invoked manually
  • Generic — not aware of your codebase
  • Easy to ignore mid-PR
  • Doesn't comment on pull requests
  • No way to enforce standards
  • No history or memory across reviews
  • Goes stale when rules change

Rams

  • Runs automatically on every pull request
  • Repo-aware — sees your actual code
  • Posts inline comments with one-click fixes
  • Top-level review summary at the top of every PR
  • Optional merge blocking on critical issues
  • Review history kept per workspace
  • Always on the latest ruleset

Get your Rams Design Score.

Free for public repos. No config, no setup, no credit card.

Review my public repoFree

From install to review in minutes

Install the GitHub App, open a pull request, get a review back in about a minute. No CI configuration, no API keys, no workflow files.

Rams becomes part of your pull request workflow.

Install Rams
  1. Step 1

    Install GitHub App

    One-click install. No CI files, no API keys.

  2. Step 2

    Open a PR

    Push UI changes to any branch and open a pull request.

  3. Step 3

    Rams reviews UI changes

    Inline comments + a top-level summary land within ~60 seconds.

  4. Step 4

    Fix issues before merge

    One-click apply on each suggestion, or merge through anyway.

Works with your stack

JSX, TSX, Vue SFCs, Svelte components, Angular templates, CSS, SCSS. Next.js app dir, SvelteKit routes, Vue pages, Angular components, React Native screens.

Don't see your framework?
Request support and we'll add it.

Next.js
React
Vue
Svelte
Angular

Built for teams shipping UI without enough design review

Founder-led teams

Shipping fast, no time for manual design review.

AI-heavy teams

Cursor, Copilot, v0 generate code. Rams catches what they miss.

Design engineers

A second pair of eyes between manual reviews.

Agencies

Consistent quality across client work without staffing senior designers per project.

Cory Etzkorn
“Rams brings the missing piece to AI tooling: taste.”

Cory Etzkorn, Founder at Soulmate · previously Design Engineer at Notion

Pricing

Start free. Upgrade when Rams becomes part of your workflow.

Free · Public Beta

For trying Rams on your open source. No credit card.

$0
Individual access
1 public repository
30 PR reviews per month
109 design rules
Inline fix suggestions
Install Free
Solo · Public Beta

For your next big idea. One private project at a time.

$39 per month
Individual access
1 private repository
50 PR reviews per month
109 design rules
Inline fix suggestions
Standard support
Get Started
Basic · Public Beta

For teams building real product. Every repo. One flat price.

$179 per month
Unlimited team members
Unlimited repositories
300 PR reviews per month
109 design rules
Inline fix suggestions
Standard support
Get Started
Pro · Public Beta

For teams moving fast. 750 reviews a month.

$499 per month
Unlimited team members
Unlimited repositories
750 PR reviews per month
109 design rules
Inline fix suggestions
Priority support
Get Started
Enterprise · Custom

For the whole organization. Custom rules, SSO, dedicated SLA.

Contact Us

Stop shipping UI issues your users will notice first.

Rams reviews every PR for accessibility, hierarchy, color, typography, spacing, components, motion, and UX — before the issues ship.

Review my public repoFree