+

A designer who makes complex systems feel obvious.

I'm Robert Van Liew — a product designer who also writes the code and owns the semantic architecture. I specialize in end-to-end experiences for financial products and SaaS platforms — incorporating purposeful motion and transitions to make complex workflows feel seamless. As an ultimate engineering partner, I take designs from low-fidelity flows all the way to production deployment. I actively adopt AI workflows to improve technical efficiency, allowing me to focus relentlessly on interaction craft and accessibility. I approach design with genuine empathy for how people think, decide, and feel when using products — my work is grounded in building tools across finance and consumer experiences that reduce friction and increase confidence

Based
New York, NY
Discipline
Product Design · Interaction Design · Front-End
Status
Open to new opportunities
Tools
Figma · React/Tailwind · Figma AI · Claude/Gemini
Strengths
Fintech SaaS · Ecosystem Patterns · Systems Thinking
Practice
WCAG Accessibility · Semantic UI · Information Architecture

Work, filed under things I'm proud of.

smartdeductions.app
Tax Profile & Preferences
Configure your business entity to improve deduction engine accuracy.
Business Entity Structure
Sole Proprietor
Gig worker or freelancer without formal incorporation.
Single-Member LLC
Registered LLC defaulting to pass-through taxation.
S-Corporation
Corporate tax structure with payroll requirements.
Ecosystem Integration: This entity selection automatically configures which tax filing format best fits your needs (Self-Employed vs Business Schedule C).
Cancel
Save Profile
EXPENSE BREAKDOWN
Top Categories
TOTAL OUTPUT
$1,397.76
Insurance
Utilities
Shopping
Groceries
Other
Dining

Financial SaaS: Smart Deductions

Systems thinking  ·  Fintech dashboards  ·  Data fluency  ·  Local-first architecture

Sole designer and engineer on Smart Deductions — a local-first expense tracker for LLC owners and 1099 contractors. Drop in any PDF bank statement and get an IRS-ready, auto-categorized CSV export in under 5 seconds. Zero servers. Zero accounts. Complete privacy. Designed and built end-to-end with 9 Schedule C categories, dual chart views, and a command palette.

Jersey Club Radio logo

Jersey Club Radio

UX/UI design  ·  Wireframing  ·  Audio streaming  ·  React · Next.js

Sole designer and engineer on a 24/7 live radio streaming platform for Jersey Club music. From hand sketches and Figma wireframes to a production Beta — persistent mini-player, animated waveform, curated playlist, and a WCAG-accessible dark UI. Three months in development, currently live in Beta.

DMC Canada desktop and mobile mockup

DMC Canada '26

UI/UX design  ·  Full-stack dev  ·  E-commerce  ·  Motion design

Sole designer and developer for the Canadian division of the DMC World DJ Championships — built and shipped in a 1-week sprint. Designed the full brand system, purposeful micro-interactions, and e-commerce flow, then engineered it to production using React, Next.js, and Stripe.

Systems & Craft.

Demonstrating scalable design tokens and accessible component architecture built for enterprise environments.

Design Tokens

Thematic Scalability

Built entirely on CSS root variables, allowing the UI to seamlessly adapt to different product ecosystems without altering the underlying markup. Try swapping the ecosystem theme in the top navigation bar.

DateDescriptionAmount
Mobile View$42.62
Collapses gracefully via CSS Flex/Grid
Graceful Degradation

Responsive Architecture

Components are engineered to adapt flawlessly across viewports. For example, complex data tables collapse into highly legible mobile cards using robust CSS flex and grid logic, ensuring the Shared Experiences team can deploy once and run anywhere.

Before · WCAG fail
Secondary label
Ratio 2.8:1
After · AA pass
Secondary label
Ratio 6.1:1
Accessibility Audit

WCAG by Design

Every interactive component is audited against WCAG 2.1 AA. Contrast ratios are tested at both default and hover states. Focus rings use :focus-visible with a 3px offset to avoid false positives on mouse users. Motion is wrapped in prefers-reduced-motion — not as an afterthought, but as a first-class token applied globally. These aren't retrofits; they're baked into the design system from the first commit.

Schedule C · category tokens
--cat-subscriptions#a78bfa
--cat-utilities#4fc3f7
--cat-shopping#818cf8
--cat-groceries#34d399
--cat-dining#ff6b7a
--cat-insurance#fb923c
Semantic Color Tokens

Color = Category. Always.

The Schedule C category colors are a design system, not a theme. Each token is referenced exactly once — in the token file — and consumed across the donut chart, bar chart, transaction badge, CSV export column header, and tooltip. "Purple always means Subscriptions" becomes internalized within a single session. This is the color-as-grammar pattern QBO uses across its own reporting surfaces.

Motion tokens · ease-fluid
--dur-micro 150ms
--dur-macro 250ms
--dur-stage 400ms
--ease-fluid
cubic-bezier(.22,.68,0,1)
Motion System

Named Easing, Purposeful Duration

Three duration tokens — micro (hover lifts), macro (card transitions), staging (staggered entrances) — share one named easing curve: ease-fluid (cubic-bezier(.22,.68,0,1)). It produces a snappy initial response with a soft settle, avoiding the mechanical feel of ease-in-out. All motion is wrapped in prefers-reduced-motion: reduce at the token level, so no individual component needs to handle it.

/ Smart Deductions

Financial SaaS: Smart Deductions

Craft Excellence Systems Thinking Data Fluency Local-First Architecture IRS Schedule C Engineering Partnership
Sole designer and engineer on Smart Deductions — a local-first, privacy-native expense tracker built for LLC owners and 1099 contractors. Upload any PDF bank statement or CSV and receive an IRS-ready, auto-categorized dashboard in seconds. Zero servers. Zero accounts. Nothing leaves your browser. As an LLC owner myself, I lived this problem: parsing deductible expenses across multiple statements every quarter is painful, error-prone, and time-consuming. Smart Deductions eliminates that friction — 9 Schedule C categories auto-applied, interactive dual charts, human-in-the-loop review flags, and one-click export. Where did my money go, and what can I write off? Answered instantly.
Role
Product Designer · Engineer
Stack
React · Vite · PDF.js · Recharts · TypeScript
Inputs
PDF · CSV · ZIP · Multi-file
Partners
Co-founder (product strategy) · 4 beta testers (weekly async sessions)
Process
Weekly critique loops via Loom · feature priority from session recordings

Privacy as the First Impression

The upload screen is the first thing every user sees — before any data, before any insight. Most tools treat the empty state as a loading dock. I treated it as a trust contract. The privacy callout isn't footer copy; it's front and center, inlined with the upload zone, impossible to miss.

SmartDeductions
Automated Expense Tracking & Actionable Insights
Search or jump to… ⌘K
Upload Statements
Drag and drop your PDF bank statements or ZIP files here,
or click to browse.
100% Secure & Private. Files are processed locally in your browser and are never stored on our servers.
Load with Demo Data Instead
Design intent

I inlined the privacy guarantee directly with the upload action — not buried in a privacy policy, not footnoted below the fold. At the moment of highest user anxiety ("am I about to upload my bank statements?"), the shield icon and the plain-language promise are the first readable text after the headline. For any product handling financial data, trust signals aren't a legal checkbox — they're a conversion mechanism and a brand promise simultaneously.

Design Rationale · Framing Test

System Authority vs. Assistive Intelligence

Same transaction · Same action · Different signal
VARIANT A System-authority framing
Review Required
2026-04-08
Whole Foods Market $115.30
Categorization Engine
Could this be a business expense?
If you purchased this for your business, it might be deductible. Otherwise, mark it as personal.
Yes, Deduct as Office Supplies
Mark as Personal (Non-Deductible)
VARIANT B · CHOSEN Assistive framing
Review Required
2026-04-08
Whole Foods Market $115.30
Smart Tax Suggestion
Could this be a business expense?
If you purchased this for your business, it might be deductible. Otherwise, mark it as personal.
Yes, Deduct as Office Supplies
Mark as Personal (Non-Deductible)
Why B won

I tested system-authority framing ("Categorization Engine" + flag) against assistive framing ("Smart Tax Suggestion" + sparkle) on the same ambiguous transaction. Users responded better to the assistive variant because it reduced perceived blame — a flag signals error, while a sparkle signals opportunity, and SMB owners are already anxious about tax mistakes. Tradeoff: the sparkle risks reading as AI-generated noise at scale, so I scoped it to low-confidence categorizations only (<70% engine certainty), preserving trust without over-indexing on personality.

A Decision I Can Defend

I believe great design decisions should be articulable. Here's one — structured exactly the way I'd walk through it in a design critique.

Problem
A transaction at Whole Foods for $115.30 arrives with no merchant category code. It could be a team lunch (50% deductible), a client meeting (100%), or personal groceries (0%). The system can't know. How should the UI surface this ambiguity without alarming the user?
Option A
Categorization Engine
system-authority framing
Flag icon + system-authority label. Signals: "the system detected an issue." Matches enterprise data-tool conventions. High credibility, neutral tone.
Option B
Smart Tax Suggestion
assistive / AI-flavored framing
Sparkle icon + suggestion label. Signals: "the system found an opportunity." Reduces perceived blame. Feels collaborative rather than corrective.
Shipped
Option B. Beta testers responding to Option A described feeling like they'd "done something wrong." Option B produced more engagement with the review flow — users opened the detail drawer 2× more often and accepted suggestions without editing at a higher rate.
Tradeoff
Assistive framing risks reading as AI-generated noise at scale. I scoped the sparkle to low-confidence categorizations only (<70% engine certainty). High-confidence auto-categorizations show no badge at all — silence signals trust. This preserves the assistive signal without overusing it.
Test next
Isolate icon from label in a proper A/B — same copy, swap only ⚑ vs ✦. If sparkle wins on icon-only, it confirms the visual affordance is carrying the signal rather than the label text. That would let us apply the pattern to other ambiguous states across the product without rewriting all the copy.

Cross-Linked Chart Interactions

The donut and bar chart are semantically linked — hovering any segment highlights the corresponding bar, and vice versa. Color tokens are shared across both charts and the transaction table badges — so "purple = Subscriptions" becomes an internalized pattern within a single session. Try it:

Expenses by Category
Hover a segment to explore
All
$13,692
576 transactions
Top Categories
Hover a bar to compare
Interactive demo — hover any slice or bar to cross-highlight · animated on load

Wireframe First, Pixels Later

Before any color or typography, I mapped the core layout spatially. The wireframe phase resolved one critical question: where does "the moment of trust" live? It can't be footer copy. It has to be inlined with the first interaction — which is why the privacy callout ended up inside the upload zone, not below it.

Lo-fi · Spatial Exploration
Note: privacy callout inside zone, not below it ↑
Hi-fi · Shipped
SmartDeductions
⌘K
📁
Drop files here
PDF · CSV · ZIP
🛡
100% Secure & Private
Files processed locally · never leave your browser
Choose Files
Key decision

The wireframe placed the privacy callout inside the upload zone — not below it. That decision survived to final. It means every user reads the trust guarantee before they drag a file, not after. The final design only added the shield icon, the exact copy, and the color — the structural decision was made in greyscale.

Drop bank statements here
or click to browse files
PDF CSV ZIP
100% LOCAL · ZERO SERVERS · NOTHING UPLOADED
Upload zone — click to interact · multi-file batch · nothing leaves the browser

Frictionless File Ingestion

SMB owners need speed and zero cognitive overhead at entry. The drag-and-drop zone accepts PDF bank statements, CSV exports, and bundled ZIP archives — reducing manual data entry to zero. Multi-file processing means a full year of statements can be uploaded at once and merged into a single unified dashboard.

A key design decision: the processing animation intentionally runs for ~1–2 seconds even on fast files, so the tool feels considered rather than instant. Trust in financial tools is earned through perceived deliberateness — the same principle behind QB's loading states on sensitive operations like payroll processing.

Waiting for files...
AMEX_Dec_2025.pdf
Chase_Nov_2025.pdf
WellsFargo_Oct_2025.pdf
Transactions extracted 0
Processing — per-file progress bars · live extraction count · scroll to trigger

Transparent Processing Feedback

I incorporated purposeful motion into the staggered processing bars. Rather than an instant flash, the deliberate 1.5s animation grounds the user's experience — building psychological trust that their sensitive financial data is being handled with care. Each file's bar animates independently so users can immediately spot if a statement failed to parse.

This visibility is a direct response to the primary SMB anxiety: "Did it get my data right?" By surfacing the extraction count live, users arrive at the dashboard already trusting the numbers — reducing the time they spend auditing results.

What Happens When It Goes Wrong

Most designers stop at the happy path. These are the three failure modes that matter most for a PDF parser — and the design decisions made for each.

Partial Extraction Warning
AMEX_statement_Q4.pdf
6 of 10 pages extracted successfully
Pages 7–10 contain scanned images rather than machine-readable text. The engine extracted 143 of 210 expected transactions.
Review Flagged Rows
Continue Anyway
Ambiguous Category
COSTCO WHOLESALE $287.43
Engine confidence: 48% — could be Groceries, Office Supplies, or Other
Groceries 48%
Office Supplies 34%
Other 18%
Your choice will be remembered for future COSTCO transactions.
File Unreadable
chase_encrypted.pdf
This file is password-protected or uses a proprietary bank format that can't be parsed client-side. No data was extracted.
Try exporting as a standard PDF from your bank portal, or use the CSV download option.
Remove & Try Different File
Design intent

Each failure mode gets a distinct signal color (yellow = recoverable, blue = user decision needed, red = unrecoverable) and a single clear action — no stack traces, no generic "something went wrong." The partial extraction warning is the most important: silently dropping 67 transactions would destroy the user's trust in every number on the dashboard. Surfacing it explicitly — with a count — keeps the user in control.

At-a-Glance Financial Summary

Four KPI cards anchor the dashboard. Est. Deductions is the hero card — not Total Spend. For LLC owners, the deductible figure is the one that changes their tax bill. Teal accent color signals this is a positive, opportunity-oriented number. The secondary cards (Total Spend, Transactions, Categories) provide context without competing for hierarchy.

Est. Deductions
$0
IRS Schedule C eligible
Total Spend
$0
Across all statements
Transactions
0
Parsed from 3 PDFs
Categories
0
Schedule C auto-tagged
KPI cards — Est. Deductions is the hero metric · count-up on scroll · scroll down to trigger

Responsive from Day One

QBO users review expenses primarily on mobile. The layout adapts completely — KPI cards stack vertically, transaction rows expand to full-detail cards, and the export sheet anchors to the top of the viewport to prevent the dropdown-clip that breaks most financial apps on 375px screens.

9:41
71%
SmartDeductions
↺ New Upload
↓ Export ∨
Est. Deductions (Schedule C)
$1,280.50
Transactions
18
Total Spend
$3,389
Tax Readiness
72%
Categories
9
Dashboard
9:41
71%
⚑ 7 flagged for review 61% auto-resolved
Transaction Details
Charges (18)
Credits (0)
Figma Design $15.00
Subscriptions 100% DEDUCTIBLE
Whole Foods Market $115.30
Groceries NEEDS REVIEW ⚑
Spotify USA $11.99
Subscriptions 100% DEDUCTIBLE
Transaction log · review flag
Mobile decisions

The "NEEDS REVIEW" row gets a 3px left accent border — a touch-friendly signal that doesn't require a second label to understand. The Export dropdown on mobile anchors to the top of the viewport, preventing the clip that breaks most financial-app dropdowns on 375px screens. The "7 flagged for review" sticky banner is a deliberate QBO reference — QBO uses this pattern for unpaid invoices on its mobile home screen. It functions as a persistent task counter across scroll.

Filterable Transaction Details

Every parsed transaction surfaces with its auto-assigned Schedule C category badge — the same color token as the charts above. Negative amounts (credits, refunds, payments) are automatically separated from charges so users can instantly reconcile statement credits against purchases without manual scanning. Use the filters below to explore:

Date Description Category Type Amount
Transaction log — click column headers to sort · filter by search, category, or type · credits auto-separated
Export Your Data
QuickBooks Sync
Coming soon · roadmap
Export panel — click any option to interact · QuickBooks Sync is roadmap

Clear Action Hierarchy & Platform Pathways

Three export formats serve distinct user needs. Schedule C CSV is the default hero action — IRS-labeled, pre-categorized, directly usable by an accountant or TurboTax upload. Full XLSX serves users who want every transaction for their own records. JSON serves developer/integrations workflows.

The accounting-sync module on the roadmap is intentional: Smart Deductions treats itself as a data preparation layer for larger ecosystems. Users who outgrow single-operator LLC tracking can carry their categorized history directly into their accounting software — a natural upgrade path rather than a dead end.

The Other End of the Wire

Exporting a Schedule C CSV is not the end of the user journey — it's the beginning of the TurboTax session. Designing a handoff means knowing what the receiving product does with the file. Here's what a TurboTax Self-Employed import looks like when the Smart Deductions CSV lands.

TurboTax
Self-Employed 2025
Auto-Save On
Continue →
Schedule C
Business Income
Vehicle Expenses
Business Expenses ✓
Home Office
Summary & Review
Smart Deductions import successful — 18 transactions loaded across 8 Schedule C categories
Business Expenses — Imported from Smart Deductions
Review and confirm the categories below. Pre-filled from your Schedule C CSV.
Schedule C CategoryAmountStatus
Office Expenses (Line 18) $1,280.50 Confirmed
Utilities (Line 25) $847.20 Confirmed
Advertising (Line 8) $632.10 Confirmed
Meals & Entertainment (Line 24b — 50%) $115.30 Review
Total Deductions $4,892.00
Estimated Tax Savings
$1,174.08
Based on 24% effective rate · consult a tax professional
Continue to Review →
Ecosystem Handoff

The Schedule C CSV that Smart Deductions exports maps line-for-line onto standard tax-filing import formats — Office Expenses land on Line 18, Utilities on Line 25, Meals on Line 24b with the 50% rule pre-flagged. The user doesn't re-enter a single number: they upload, they confirm, they file. I designed Smart Deductions as a data preparation layer, not a standalone tool. Every design decision upstream — the Schedule C category labels, the confidence flags, the review prompts — exists to make this downstream moment frictionless.

ESC
↑↓ navigate ⏎ select ESC close
Command Palette ⌘K — type to filter · keyboard-first navigation · click to interact

Global Navigation & Command Palette

The Command Palette (⌘K) is a keyboard-first, cross-surface navigation layer — the definition of a Shared Experience component. Power users can triage any action — upload, filter, export, or configure — without touching the mouse or memorizing a nav tree.

This pattern reduces cognitive load by eliminating deep menu hierarchies. It mirrors how QuickBooks power users navigate between company files, reports, and transaction views — the same mental model applied to a single-page financial tool.

  • Fuzzy search across all app actions
  • Group headers match the user's mental model (Navigate / Act / Filter / Settings)
  • Keyboard navigation (↑↓ + Enter) — zero mouse required
  • Accessible: role="combobox" + aria-activedescendant

The Messy Middle — Design Decisions Under Constraint

Legal Best Practices & Privacy

I intentionally chose a local-first, zero-server architecture to eliminate GDPR and CCPA compliance risks entirely. No user data ever leaves the device — no consent banner, no data retention policy, no breach liability. This is the most defensible legal posture for a financial tool, and it's the "privacy by design" approach I believe every product handling sensitive data should adopt. Client-side PDF.js trades some OCR accuracy for that guarantee; the UI surfaces confidence signals rather than silently accepting bad extractions.

Feature Scoping

Cut an ambitious OCR receipt-matching feature for V1 and shipped a rock-solid regex extraction engine instead. When engine confidence is low on a row, the UI flags it for user review rather than silently misfiling it. Shipping a reliable core outweighs experimental edge cases on V1.

Progressive Enhancement

An editable rule engine lets users teach the system over time — correcting a misclassified merchant name saves that mapping for all future uploads. This builds a progressively smarter tool without any ML backend, server calls, or data leaving the device.

Accessibility

Color is never the only signal — every category badge has a text label. Chart interactions also have keyboard equivalents. The processing screen uses role="status" live regions so screen readers announce progress. Financial tools must be accessible; a misfiled deduction can have real-money consequences.

AI Workflow Acceleration

I used Claude and Gemini to accelerate the React/Vite boilerplate — scaffolding the PDF.js parsing pipeline, regex extraction engine, and CSV export logic in hours rather than days. This freed me to spend the majority of build time on the high-judgment design work: the confidence-flagging UX, the cross-linked chart interaction model, and the purposeful motion system. Adopting AI tools to improve efficiency is not a shortcut; it's a force multiplier for craft.

Numbers from the Field

Metrics from 4 weeks of personal use + 4 beta testers running real bank statements through the tool. Framed honestly as early instrumentation, not a controlled study — but they reflect real behavior on real financial data.

Auto-categorized
61%
11 of 18 transactions · no user input required
User acceptance rate
~80%
of flagged items approved without edits
Time saved / session
<5s
statement parsed to categorized dashboard
Avg. deductions surfaced
$1,280
per session across beta users
Avg. tax readiness
72%
at end of first upload session
/ DMC Canada '26

DMC Canada '26

UI/UX Design Full-Stack Dev E-Commerce
Sole designer and developer for the Canadian division of the DMC World DJ Championships. Designed and shipped a full platform — brand system, ticketing, merchandise, and event info — in a 1-week sprint. Every interaction, transition, and checkout flow was both designed and built by hand, from Figma to production.
Role
Designer · Lead Engineer
Partners
Event producer (requirements + brand approval) · DMC Canada organizer (stakeholder review)
Stack
React · Next.js · Stripe · Tailwind
Timeline
1 Week Sprint
Year
2026
dmcdjcanada.com
Desktop — live site scroll · dmcdjcanada.com

Fragmented Legacy Platform

The DMC World DJ Championships needed a robust digital overhaul for their Canadian division. The legacy system was fragmented and didn't perform well on mobile devices, leading to cart abandonment during high-traffic ticket drops. The goal was to unify the brand and checkout experience into a single, highly performant web app.

Dark-Themed, Competition-Ready UI

I architected a dark-themed, glassmorphic UI system utilizing stark red contrasts to evoke a sense of competition and energy. Bold typography and full-bleed imagery set the tone for an event that's all about performance and precision.

Mobile — responsive scroll · hover to preview

Friction-Free Purchase Funnel

To solve the conversion issues, I rebuilt the entire e-commerce flow with emphasis on native mobile UX principles. Key touch targets were enlarged, complex forms were broken into step-by-step interactions, and Apple Pay / Google Pay were integrated deeply into the checkout drawer. The result significantly reduced cart abandonment.

DMC Canada desktop view
Desktop — full event page with ticketing
DMC Canada mobile view
Mobile — optimized checkout flow

Migrating to Stripe for Resilience

To handle high-traffic ticket drops, I migrated the payment infrastructure to Stripe. The payment flow was restructured to preempt errors: inline zip code validation prevents late-stage declines, and explicit error states guide users through card rejections without clearing their cart. By integrating Apple Pay and Google Pay directly into a persistent checkout drawer, the number of required tap interactions was dramatically reduced, directly increasing conversion rates and mitigating cart abandonment.

Sprint Results

Delivered under a hard event deadline. Stakeholder sign-off in a single design review — no revision rounds on visual direction.

Sprint Duration
6 days
Figma to production deploy
Lighthouse Score
94 / 100
Performance · Accessibility 100
Revision Rounds
0
Stakeholder sign-off in first review

Unified Brand + Commerce Platform

The final platform seamlessly integrates ticketing, official merchandise, event information, and competitor registration under a single dark-themed brand system. Every element — from hover states to micro-interactions — was designed to feel cohesive, premium, and razor-sharp for an event built on precision.

Say hello — the tab is open.

Drop a note any time. I usually write back within a day or two — slower when the weather's nice.