Building an intuitive visa and tax tool from scratch

Mobile0 to 1BrandingDevelopment
Sarmiza app hero image

Sarmiza is a mobile app that simplifies tax and immigration compliance. It allows users to set day limits, create timelines, and effortlessly track progress. As the founding product designer and engineer, I owned all the visuals and product from user research to front-end implementation.

Role

Product Design

Front-End Development

Branding

Team

2 x Full-Stack Engineers

1 x Product Designer

Timeline

2022 - Present

Why this problem?

Managing tax residency and immigration is high-risk, but existing tools are inaccurate, hard to use, and insecure

Competitive analysis and interviews with frequent travelers uncovered the following core pain points.

Effort Icon

Manual Effort - Tracking each day by hand via existing solutions (spreadsheets, calendars, apps, etc.) is tedious.

Costly Errors Icon

Costly Errors - Potential double taxation and visa overstays are significant, high-stakes risks that can cause considerable stress.

What is Sarmiza?

Sarmiza is an all-in-one travel compliance tool

Offline Tracker

The offline tracker drives Sarmiza's functionality, keeping location and day counts updated to clarify residency status and ease tracking anxiety.

Watchlist & Widgets

I worked with legal experts to build the watchlist, distilling complex requirements—like Canadian Citizenship and Schengen—into clear flows and widgets.

Watchlist Empty
Watchlist Select Jurisdiction
Watchlist Add Limit
Watchlist Widgets
Watchlist Canadian Citizenship

Show Summary

A summary component provides a day count breakdown by location for any time period.

Show Summary

Timeline

Users can effortlessly scan photos or import travel history into a well-organized timeline.

Timeline Create
Timeline Main View

Onboarding

A clear and concise onboarding flow was crucial for user retention and conversion.

Onboarding Paywall

How did we approach this?

Defining priorities and staying focused was key to shipping a cohesive product fast. Here's a breakdown.

Target Icon

Clear objectives eliminate ambiguity

We balanced customer needs and business goals by defining our ideal user, solving core pain points, and creating a roadmap to drive revenue and product-market fit.

User Icon

Prioritize around user needs

I created a prioritization framework to focus on high-demand, high-impact, low-effort features, like residency tracking, watchlists, and location precision.

Collaboration Icon

Great collaboration through structure

Staying aligned as an async remote team was tough. We relied on clear, consistent memos and collaborative docs to track progress and maintain context.

Lightning Icon

Ship fast & iterate

Real feedback comes from the market. Overthinking kills momentum and delays necessary iteration.

Branding & Marketing

Sarmiza's brand and design system ensure cohesion across platforms

Landing Page

I designed and developed Sarmiza's landing page and visual identity.

Sarmiza Landing Page

Tools & Content

The SEO-optimized site features interactive tools and educational content, driving consistent organic growth.

Visa Tools
Calculator Tools

App Store

The app's design system ensures a consistent look and feel across all platforms.

App Store Screenshots

Where did challenges arise?

Overcoming onboarding and privacy challenges to build user trust

Timeline Creation Bottleneck

Timeline creation was a major bottleneck, causing 68% of users to drop out during onboarding.

Our solution was an on-device “Photos-to-Timeline” feature that scans date and location metadata to automatically generate a travel log.

// This code is simplified for the sake of this article 
async function getMedia(fromTime, toTime) {
  setShowLoadingScreen(true);
  const photos = await CameraRoll.getPhotos({
    first: 50000,
    assetType: "All",
    fromTime,
    toTime,
    include: ["location"],
  });
  // Update progress indicator and prepare for next stage
}

for (const photo of photos.edges) {
  if (photo.node.location.altitude < 5000) {
    const locCode = await convert_coords(photo.node.location);
    rawTimeline.push(locCode); // Group entries for display
  }
}

Impact

Cut onboarding from 15 minutes to 2, raised trial conversions from 9% to 15%, and preserved on-device privacy—earning user praise for a “magical” experience.

Offline Implementation & Privacy

We adopted an offline-first architecture with local encryption, no mandatory login, and optional iCloud sync—ensuring data stays on the device and building user trust.

By combining MMKV and WatermelonDB for fast, encrypted key-value storage and complex queries, we handle data locally while preserving battery life via minimal background updates:

// This code is simplified for the sake of this article 
  BackgroundGeolocation.ready({
  distanceFilter: 100,
  stopOnTerminate: false,
  startOnBoot: true,
  preventSuspend: false,
  maxDaysToPersist: 7,
  persistMode: BackgroundGeolocation.PERSIST_MODE_ALL
});

Impact

Delivered a fully offline experience with minimal battery drain, zero external servers, and optional iCloud sync—reinforcing privacy in a high-stakes domain.

Reflections

Working in a small, tight-knit team let me shape every aspect of Sarmiza—from product strategy and feature ideation to deep collaboration with our development team.