Skip to content

B2B Cloud Infrastructure

NobarCloud

ROLE
Founding Product Designer → Product Manager (second hire on the team)
TIMELINE
16 months, 8 as the founding product designer, 8 as product manager
CORE PRODUCT
Nobar Cloud, a B2B cloud infrastructure provider (cloud servers, containers, and managed architecture)
IMPACT
Full product surface designed and shipped in 4 parallel versions (mobile/desktop × Persian/English) across 7 console modules and 100+ flows, backed by research, analytics, and cross-functional buy-in at every stage

01 / Context & The Bottleneck

Nobar Cloud entered a market most people assume is crowded. It wasn’t. Cloud infrastructure in this region had few serious providers, and the ones that existed had grown complex enough that users were tired of fighting the product just to get a server running. That gap, a blue ocean hiding behind what looked like a mature category, was the actual opportunity.

I joined as the second person on the team, before there was a product to design, let alone a team to design it for. Every page, every pattern, every interaction mechanism from day one was mine to define, there was no existing design system, no prior version, no inherited decisions to work around or against.

The core bet: take the complexity away from the user.

Most competitors leave infrastructure complexity on the customer’s desk, configure this, understand that, debug it yourself. Nobar Cloud’s differentiator was a feature called Memar (Architect), designed to absorb a large share of that complexity internally rather than hand it to the user. That single decision shaped how every other part of the console got designed, because once the product promises to carry complexity for the user, every flow has to actually deliver on that promise, not just claim it.

market.position(complexity, capability)
Market gap between a handful of complex incumbent cloud providers and users fatigued by that complexity, the opening Nobar Cloud was built to fill

Scope, stated plainly.

Every surface shipped in four parallel versions: mobile and desktop, Persian and English, with nothing treated as a secondary translation or a secondary breakpoint. The product spanned three main sandboxes:

  • Website, roughly 30 pages
  • Login, around 8 flows
  • Console, split across seven modules: Cloud Server (15 to 20 flows), Cloud Container (20 to 25 flows), Financial (8 to 9 flows), Profile (9 to 10 flows), Ticketing (4 to 5 core flows), Dashboard, and Memar (Architect), which wrapped the entire cloud server and container provisioning process into a single guided experience
scope.tree(sandboxes)
Full product surface across Website, Login, and the seven Console modules, each shipped in four parallel versions

02 / Architecture & The Fix

Nothing here started from a blank Figma file. Every pattern had a document behind it before it had a shape: bento grid for the dashboard, button placement inside a modal, all of it reasoned through first.

A design system built specifically for this, documented as its own case study.

Every pattern referenced in this section, the bento grid, the component states, the bilingual and dark/light handling, came out of a dedicated design system built alongside the product, not bolted on after. That system is documented in full as a separate case study: how it was structured, why, and what it enabled.

Competitor research, two fronts:

  • Regional: ArvanCloud, Liara, Sotoon
  • Global: AWS, DigitalOcean, Vercel, Hetzner, OpenStack

Not to copy them. For every feature and every screen, there was a real answer to “what does the best version of this already look like,” and the job was to go past that, not localize it.

benchmark(regional, global, nobar)
Feature-by-feature benchmark across regional and global cloud providers

Personas came late, on purpose. Proto-personas first, stated as assumptions, nothing dressed up as research before there was any. Real personas only showed up once analytics and user research gave something worth validating against. A persona built on day one is just a guess with a name attached.

JTBD stayed on as a live check, not a kickoff exercise filed away after week one. If a flow quietly missed part of what the user needed to get done, JTBD is what caught it, before launch, not after a support ticket did the catching instead.

Four prioritization models, never interchangeable:

  • Kano: delight vs. baseline expectation
  • MoSCoW: the hard line for a given sprint
  • RICE: reach against effort, for anything big enough to deserve the math
  • Effort/Effect: the quick call, when speed mattered more than process

We matched prioritization frameworks to context instead of forcing one model onto every decision, in order to keep sprint-level calls sharp without sacrificing rigor on larger bets, and the result was 16 months of shipped work with low rework and low back-and-forth with engineering, evidence the approach scaled with the product rather than slowing it down.

User motivation, mapped before features got built around it.

Not every user wants the same thing from a cloud panel, and treating them all the same was a known way to lose both ends. The Marczewski Gamification Framework was used to classify user types by what actually drove them, before deciding what to build or incentivize:

  • Achievers wanted to see progress: uptime stats, resource efficiency, a visible sense that their infrastructure was well-run
  • Philanthropists were the senior engineers referring teammates and writing internal docs about Nobar Cloud unprompted, driven by helping others succeed, not by what they personally got out of it
  • Free Spirits wanted to explore and configure without friction, Memar’s guided provisioning was partly built to give this group room to experiment without real risk
  • Players responded to the credit system and milestone rewards, incentives moved them more than architecture did
  • Disruptors were the ones who broke flows intentionally to find edge cases, their feedback shaped a disproportionate share of the error-state design

This wasn’t a framework applied for its own sake. Features like the Memar guided flow, the referral mechanism, and the credit system were each built with a specific motivation type in mind, not as one-size-fits-all additions.

segment(users, framework='marczewski')
User types mapped using the Marczewski Gamification Framework, each tied to a specific product mechanism built to serve that motivation

Infrastructure came before design, not after.

Open technical questions went to the infrastructure team first, before a single screen got built around them. Resolve what’s actually possible, then design inside that, not the other way around, finding out three weeks later something can’t ship. Separate sessions ran just so infra and technical teams saw the direction early enough to push back while pushing back still mattered.

That ordering is most of why handoff stayed light:

  • A real design system meant engineering wasn’t guessing at values
  • Infra already knew what was coming
  • Error states and edge cases were spelled out in the file itself, engineering could build from it without a single Slack message asking “what happens if this fails”

Not everything landed easily, though.

We restructured panels, flows, data displays, and feature access to fix root usability problems instead of preserving familiar-but-buggy patterns, in order to solve the actual problem rather than repeat a known one, and the result was validated user outcomes that flipped internal skepticism into full buy-in, a shift that carried forward into every unconventional call made after it.

flows.restructure(before, after)
Restructured panel and flow architecture that initially met internal resistance, validated once user outcomes demonstrated the new approach worked

Two designers, split by strength, not by ownership.

Hanie Mansour Kiai and I worked across the full 16 months without splitting the product into “my parts” and “her parts.” Both of us stayed onboarded on everything, specifically so either one could step in if the other hit a wall mid-sprint, a server-side launch deadline doesn’t wait for one person’s calendar to clear. That overlap also meant every pattern got a second set of eyes before it reached engineering, catching gaps neither of us would’ve caught working solo.

Feedback came from wider than the design team, on purpose.

We widened feedback loops to include infrastructure, support, and sales rather than keeping pattern decisions inside design, in order to catch blind spots a design-only process would miss, and the result was fewer late-stage surprises and a product that held up under real operational and customer-facing conditions, not just usability testing.

feedback.loop(hub='design')
Feedback gathered across design, infrastructure, engineering, and customer-facing teams before patterns were finalized

RBAC, because B2B teams aren’t one account.

A customer needed to hand different access levels to their own people at the project level: who can provision a server, who can only look at one. Getting that wrong in an infrastructure product isn’t a UX inconvenience. It’s a security problem waiting to happen.

Pricing was designed, not assigned. Built the same way everything else was, real marketing and sales psychology behind the structure, in-house, meant to convert rather than just cover cost.

Trust was the real currency. Handing production servers to a company nobody’s heard of yet is a real risk a customer takes on. Nothing got asserted without something to back it up. The documentation habit wasn’t bureaucracy, it was the only reason early customers had to believe this team knew what it was doing.

b2b.foundations(rbac, pricing, trust)
RBAC for project-level team permissions, pricing structure built on marketing psychology, and documentation as the trust mechanism for a new B2B entrant

Eight months in, the role changed.

The founding design role became product manager for the second half.

role.diff(designer → product manager)
StageFocusScopeExecution
BeforePushing pixelsDesign-team scopeVisual execution
AfterUntangling flows before they reached a screenDirect contact with infra, engineering, customers, stakeholdersProcess and flow design

Cursor became the fast lane for this: rough low-fidelity flows built quickly, tested, handed to design only once the direction held up. Validating a flow and polishing a flow stopped being the same step, so neither one slowed the other down.

The toolkit behind every decision, not just the metrics it produced.

Data wasn’t gathered once and filed away, it ran continuously, across tools chosen for different jobs:

  • Google Analytics for funnel-level behavior: where traffic came from, where it dropped
  • Microsoft Clarity for session recordings and heatmaps, watching real users hit real friction, not inferring it from a dashboard
  • Maze for testing flows at low fidelity before a single pixel got polished, catching a broken flow while it was still cheap to fix
  • Cursor for building those low-fidelity flows fast enough to test weekly, not monthly

Each tool answered a different question. GA said where people left. Clarity showed why. Maze tested whether a fix actually worked before it got built for real. That layering is what kept the team from optimizing against a single, misleading number.

research.stack(layers=4)
Google Analytics, Microsoft Clarity, Maze, and Cursor, each covering a different layer of the research and validation loop

Usability alone stopped being the question. AARRR took over as the lens, and each stage of it had its own page-level targets, not a single shared metric sheet everyone squinted at differently.

  • Acquisition / Activation: scroll depth, time on site, signup-to-first-server time
  • Engagement / Retention: full flow completion rate, bounce rate reduction, monthly active teams
  • Revenue: site-to-console conversion, churn, expansion revenue per account

A designer cared about the first group. Product and engineering lived in the second. The third was the one that got read out in stakeholder meetings. Same framework, three different lenses on it.

We removed the card requirement from signup to eliminate financial risk at the first touchpoint, aiming to beat the 10 to 15% industry-average activation range for no-card B2B trials, and the result was a frictionless entry point that gave Acquisition and Activation a shared, trackable moment: the first provisioned server.

signup.flow(card_required=false)
Free signup credit designed to drive Activation and Referral simultaneously, removing financial risk from the first real test of the product

03 / Impact & Outcome

What this added to the team and the product.

Nobar Cloud shipped a fully designed B2B cloud platform in four parallel versions across seven console modules, backed by a documented rationale for every pattern and a measurement discipline most teams that size don’t bother building.

Research and validation infrastructure, not just screens:

  • A 4-layer design system that kept engineering handoff fast enough that most flows shipped with under 2 rounds of revision after the first design review
  • 100+ flows, each specified with every error state and edge case before reaching engineering, most of why technical back-and-forth stayed low across 16 months
  • A continuous JTBD and proto-persona-to-persona pipeline that caught unmet user needs before launch rather than after a support ticket flagged them
  • User segmentation via the Marczewski Gamification Framework, directly shaping features like Memar’s guided provisioning and the referral mechanism
impact.infrastructure()
Design system discipline, flow documentation, JTBD validation, and user-motivation segmentation, the infrastructure behind every shipped feature

What the growth mechanisms were built to move:

growth.targets(framework='AARRR')
StageWhat was targetedWhy it mattered
AcquisitionSite-to-signup conversionFirst trust signal for a brand-new B2B entrant
ActivationSignup-to-first-server timeThe real proof the product delivered on its promise
RetentionFull flow completion rate, bounce rate reductionWhether the redesigned flows actually held up under real use
ReferralPhilanthropist-type users referring teammatesValidated the trust-building approach was working, word of mouth in B2B infra is earned, not bought
RevenueSite-to-console conversionWhether design and pricing worked together, not against each other
Growth targets mapped to each AARRR stage, benchmarked against industry norms for B2B SaaS free-trial conversion

Qualitative signal that doesn’t fit a spreadsheet:

  • Candidates and industry peers cited the product as a reason they wanted to work with the team, repeatedly, unprompted
  • Internal resistance to the restructured panel and flow architecture reversed into full buy-in once user outcomes validated the direction, and that trust carried into every unconventional decision after
  • Feedback loops deliberately crossed outside design, infrastructure, engineering, support, and sales all shaped pattern decisions before they were finalized, not after something broke in production
signals.qualitative()
Team sentiment, internal buy-in, and cross-functional trust as qualitative markers of product and process quality

Then the war happened.

Nobar Cloud shut down during the war. The team continued for a short period afterward with reduced scope, then the project ended entirely, with part of the remaining team absorbed into an external partner company. None of that reflects on the work. Sixteen months of documented, cross-validated, metric-driven product design doesn’t get undone by a macro event no product decision could have hedged against.

What this proved

That a two-person founding design function, operating with the rigor of a much larger org, documented rationale, cross-functional alignment before design started rather than after, continuous behavioral measurement across Clarity, GA, and Maze, and a framework-matched approach to prioritization, could carry an entire B2B infrastructure product end to end. The shutdown was a verdict on circumstances. It was never a verdict on whether the approach worked.

04 / The Interface