A conversation with Hy

What are you building?

FeedbackMe

An internal tool, redesigned into a SaaS clients can set up themselves.

Every new client used to need a developer editing the database by hand. As the sole designer, I redesigned the configuration system, the admin, the onboarding and the landing page, so basic setup now starts from one spreadsheet upload.

V1.0 launched
How did I help
  • Design & system work
  • B2B SaaS
Role
Sole designer
Team
2 mobile, 1 backend, 2 QC
Timeline
12 months
Phase
0 → 1, first release
AI summary
Who's reading? I'll show what matters to you.
  • An internal feedback tool turned into a SaaS that clients set up themselves.
  • As the sole designer, I redesigned the configuration system, the admin, the onboarding and the landing page.
  • Basic setup now starts from one spreadsheet upload instead of a developer editing the database. V1.0 launched.
View CV

The tour: Logic before screens → What made it self-serve → Next time

Ask about this case
Three FeedbackMe admin setup screens: Import with its two steps for the Excel template, Language with each app label in English and Vietnamese, and Theme with the app colour

Built for one team.
Sold to many.

The problem

FeedbackMe started as a tool for one internal environment. When it became a commercial SaaS, every new client's setup landed on the developers. If your product grew the same way, this may sound familiar.

  • 01Onboarding eats developer timeEach new client meant a developer changing data structures by hand, instead of building the product.
  • 02Clients can't shape it to their workflowThere was no configuration UI. Every client-specific need became a support ticket.
  • 03Flexible, but not breakableThe config had to fit very different client structures without breaking the shared infrastructure underneath.

Logic before screens.

Approach

A polished onboarding flow is useless if the configuration underneath is broken. So discovery mapped the data first. The PO and CEO owned the what and why; the team and I owned the how.

  1. 01Logic mappingWent through the legacy tool with the backend dev to decide which fields had to become dynamic, such as regions and locations.
  2. 02Depth calibrationAgreed with the team how far clients can customise: their regions and locations, plus theme, logo and display labels, without breaking the shared system.
  3. 03Feasibility syncReviewed the designs with engineering every Thursday, so every layout matched what the backend could actually do.

What made it self-serve.

The FeedbackMe admin Import screen: important notes, then two steps, download the template, then choose the Excel file and start the import
01 / 04 · FeedbackMe admin

Excel-driven onboarding

Multi-day manual setup blocked new clients from getting started.

  • The FeedbackMe admin Import screen: important notes, then two steps, download the template, then choose the Excel file and start the import
    01 / 04 · FeedbackMe admin

    Excel-driven onboarding.

    Multi-day manual setup blocked new clients from getting started.

  • The FeedbackMe admin Language settings: a table of app labels, each with its English and Vietnamese text in editable fields
    02 / 04 · FeedbackMe admin

    A flexible config layer.

    Hardcoded fields couldn’t adapt to different client data models.

  • The FeedbackMe landing page, English version: “Optimize operations, Connect teams” with a free trial button
    03 / 04 · feedbackme.com.vn

    The public face of the SaaS. The marketing site for FeedbackMe as a commercial product: features, industry use cases, pricing tiers and a contact form, in Vietnamese, English and Japanese.

  • The FeedbackMe Figma variables, shown like Figma's Variables window in dark mode: the collections Tokens, Main Colors (Edit Here), App, Wrapper and Landing page; the Tokens table with Light and Dark values that point to other variables (background-action-primary to Brand/brand-500 in Light and Brand/brand-400 in Dark); and the Main Colors table, where each brand colour has a value per mode: Safety orange #FF6C0B, Asset Management teal #3E878E, Service blue #0088E4
    04 / 04 · FeedbackMe admin

    A design system for what comes next.

    Future modules needed a clean foundation to build on.

Set it in the admin.
The app follows.

Animated example: in the FeedbackMe admin Theme screen the app colour is changed from #E64343 to #2563EB and saved, then the English mobile app home turns from red to blue. The blue is an example colour.
Example colour

Beyond setup: the product flows.

The FeedbackMe app in English, on Create feedback for the projector: the status set to Normal and the Excellent face picked, with a Send feedback button. The animation runs through the whole report in one phone: scan the device code, search and pick the projector, pick the Excellent face, send, confirm in the dialog “Excellent! Confirm sending excellent feedback for [PE1242244] Projector SONY AP903-657”, then the thank-you screen.
01 / 04 · FeedbackMe app

Report an issue

Scan or search for the device, rate it with a face, then confirm before the feedback is sent.

  • The FeedbackMe app in English, on Create feedback for the projector: the status set to Normal and the Excellent face picked, with a Send feedback button. The animation runs through the whole report in one phone: scan the device code, search and pick the projector, pick the Excellent face, send, confirm in the dialog “Excellent! Confirm sending excellent feedback for [PE1242244] Projector SONY AP903-657”, then the thank-you screen.
    01 / 04 · FeedbackMe app

    Report an issue. Scan or search for the device, rate it with a face, then confirm before the feedback is sent.

  • The FeedbackMe app in English, on the processing history: each step, who did it and when, with a View feedback link on each. The animation runs in one phone: the feedback status (New, Viewed, Processed, Confirmed) with the latest update and a History button, then the history, then the feedback details: marked for rework, by whom, a note and a photo.
    02 / 04 · FeedbackMe app

    Follow it to the end. The status from New to Confirmed, a history of who did what and when, and the details of each update, with a note and a photo.

  • The FeedbackMe admin Workflow settings, where each step has its primary, secondary, backup, reviewing and approval roles, with the Edit Process dialog in the middle of the screen (Create, then Seen); the animation then opens the Add Step dialog (action, next process)
    03 / 04 · FeedbackMe admin

    Who does what. Each step lists the roles allowed to act on it; a process chains an action to the next one.

  • The FeedbackMe admin Add Dynamic Formula dialog: name, description, formula and criteria fields, then a searchable tree of issues grouped by category, each with a code, a weight factor and an Add button
    04 / 04 · FeedbackMe admin

    Scoring formulas. A formula is built from the criteria tree: each issue has a code and a weight factor.

What I'd do differently

Next time, I'd watch a client's first upload before calling it done.

The config logic held up in review with engineering and the PO. On the next 0 → 1, I would add one more check: sit with a client through their first upload, so self-serve is something we have seen, not only reasoned.

Lessons
  • Logic dictates UXThe biggest decisions here were structural, not visual.
  • Autonomy is scalabilityEvery routine setup a client does alone frees dev time for the product.
  • Guardrails make it usableTotal freedom breaks the experience. Limits are what let it scale.
Does your product work but not scale?

Start with an audit, not a rebuild.

For live products that are losing users or eating dev time. I audit the full experience, restructure the UI system and fix the gaps without rebuilding everything from scratch.

Similar work: UX audit, quoted after a short call

More work

All work
Start a conversation

Tell me where your product gets stuck. We'll find the structural fix.