Private case study

WiseCal

Enter the password to view this work.

For access, email contact@victoriarork.com

← WiseCal overview

WiseCal deep dive

Designing the system behind the scan

WiseCal is a camera-first iOS food journal built around AI analysis. After defining the core product experience, I translated that concept into a launch-ready system across product architecture, competitive research, nutrition methodology, monetization, privacy, entitlement, edge cases, design systems, and implementation.

Role Product Design Lead, 0-1
Stage Pre-launch, launch-ready v1
Focus Product architecture, monetization, AI systems, implementation
Companion WiseCal overview

In this write-up: Competitive analysis · Information architecture · Interaction · Product model · Result architecture · Health-adjacent · Monetization · State design · Implementation · MVP · Launch metrics · Reflection

Cheeseburger with bacon and fries on a plate at a casual restaurant
Close-up of a Hawaiian pizza with pineapple, ham, and melted mozzarella
Hong Kong street at night with a large restaurant billboard and traffic below

Competitive analysis and category research

I conducted competitive analysis across established calorie trackers and newer AI food-scanning products, including recent US App Store reviews. I looked for recurring patterns in activation, interaction friction, trust, monetization, and information hierarchy.

I translated recurring themes into product constraints around time to value, subscription timing, information density, and tracking behavior.

Capture speed creates immediate value

People responded positively when photo analysis replaced manual food entry and the path from camera to result felt fast. That reinforced making the camera the primary interaction rather than treating photo scanning as a feature inside a conventional tracker.

Paywalls can interrupt trust before it exists

Negative reviews of AI food-scanning products frequently focused on trials, pricing, refunds, unclear subscription expectations, and being asked to pay before experiencing a useful result. That created a clear product constraint:

  • WiseCal needed to demonstrate scan quality before asking someone to subscribe.

Dashboard-first architecture reinforces tracking behavior

Established nutrition products tend to organize the experience around remaining calories, macro targets, charts, goals, and adherence. I did not want WiseCal’s hierarchy to begin there. The food itself became the primary object.

More nutrition data does not necessarily create more understanding

A scan can generate a large amount of information. The interface needed to decide what deserved immediate attention rather than exposing everything the system knew. This shifted the design problem from:

Original question

How much nutrition information can WiseCal provide?

Problem shift

What does someone actually need to understand right now?

WiseCal camera: Scan food mode framing a bowl of mussels
WiseCal summary sheet: Mussels in Garlic & Herb Broth with daily impact and macros
WiseCal History: Food Moments grid of saved scans

Information architecture: why the camera became home

This was an information architecture and product strategy decision. I considered three directions.

  • Dashboard-first

    A dashboard could immediately communicate that WiseCal is a serious nutrition product. It would also reproduce the mental model of traditional calorie trackers. The first interaction would be reviewing data rather than creating it.

  • Journal-first

    Opening to History would reinforce the idea of WiseCal as a food journal. An empty journal is not useful for a new user, and reaching the product’s main action would still require navigation.

  • Camera-first

    Opening directly to the camera makes the core behavior immediately available. It also turns the value proposition into an interaction: you understand WiseCal by using it.

I chose camera-first because it minimized time to value and made the primary behavior available before the user had created data, configured goals, or learned the navigation. History and Insights remain important, but they are downstream of capture.

Core interaction and state logic

The interaction design is short:

Open → Point → Scan → Understand

I defined the system rules underneath that loop, rather than restating the surface experience:

  • no onboarding gate
  • no account required before first scan
  • no subscription decision before value
  • failed analyses do not consume free usage
  • Food, Menu, and Products share one capture system
  • the full result appears before the next decision
WiseCal flow: scan food, view summary, browse history, and share

Product model: a scan is an observation

A major product-model decision was separating scanning from consumption. The easiest implementation would have been:

Scan food → add it to today’s intake

I rejected that model. People can scan food for many reasons: deciding what to order, comparing options, scanning another person’s food, checking something they may not eat, testing recognition, or exploring the product.

If every analysis automatically changed daily nutrition data, the system would become less trustworthy. The states remain separate:

Analyze → Understand → Decide whether to consume

This distinction affects History, Insights, daily totals, menu scanning, and error correction. It also makes the underlying model more honest about what the camera actually knows. The camera can observe food. It cannot know whether the user ate it.

I structured the domain around a small set of objects:

  1. Scan

    contains detected Foods

  2. Foods

    contribute to Nutrition Signals

  3. Signals

    accumulate into History

  4. History

    generates Insights

  5. Insights

    interpret patterns over time

WiseCal camera: Scan food mode framing a prosciutto and salami pizza
WiseCal camera: analyzing food overlay on a pizza scan
WiseCal summary: Prosciutto & Salami Pizza with daily impact and macro breakdown
WiseCal share view: calorie overlay and social export options

Result architecture and interaction hierarchy

The scan result had to hold three tensions at once: information depth, cognitive load, and speed of comprehension. I organized the result into four layers so the analysis could be useful without becoming a nutrition label at camera speed.

Result layers

  • Layer 1: Identification

    Before nutrition information matters, the user needs to know what WiseCal thinks it sees. Food identification sits at the top of the hierarchy. Correction belongs here, because the rest of the analysis depends on that interpretation.

  • Layer 2: Immediate nutrition context

    Calories and macros provide a familiar summary. The product can then surface a small number of characteristics that meaningfully stand out rather than reproducing a full nutrition label.

  • Layer 3: Daily context

    Where relevant, WiseCal can show how the food relates to the rest of the day. The wording is descriptive rather than disciplinary. The interface is not intended to tell someone whether eating something was good or bad.

  • Layer 4: Action

    Once the user understands the result, they can add it to their history, correct the analysis, share it, or continue scanning. The same result architecture supports food, menus, products, history, and sharing without creating a new product model for each capture context.

Designing a health-adjacent AI product

WiseCal is not a medical product. Nutrition sits close enough to health that sourcing, accuracy, privacy, and claims required more scrutiny than they would in a general-purpose camera app. App Store review made this concrete. I treated those constraints as product architecture rather than a final compliance pass.

WiseCal summary: Prosciutto & Salami Pizza with daily impact and macro breakdown

Communicating estimated nutrition data

Nutrition numbers can appear more authoritative than an AI estimate deserves. Calories and macros provide recognizable high-level information. I present them as estimates when they come from camera analysis, not as laboratory measurements. Users can hide calorie values without losing the journal. A polished result should make information easier to understand without making the underlying system appear more certain than it is.

Guidance, limits, and personalization

Daily context can include broader nutritional patterns rather than focusing only on calorie balance. Values such as sodium, added sugar, saturated fat, and fiber need to distinguish guidance, limits, and personalized targets. The interface should not make every value look like the same type of recommendation.

Some recommendations become more meaningful with information about the user. I did not make a completed profile a prerequisite. The core experience works with useful defaults first. Personalization is introduced only when it materially changes the result, so data collection stays proportional to product value.

Designing for awareness instead of adherence

The language system matters as much as the numbers. Many food trackers frame the day around compliance: calories left, over target, goal missed, remaining allowance. I designed for context without judgment.

Remaining today instead of Calories left. Food instead of forcing every entry into breakfast, lunch, or dinner. Optional calorie visibility rather than making calories the mandatory center of the experience.

The broader principle is

Help someone notice patterns without making the interface behave like a coach they never asked for.

Methodology and traceability

Nutrition guidance could not simply appear authoritative because the interface looked confident. For daily guidance such as fiber, sodium, added sugar, saturated fat, food groups, calories, and protein, I mapped values back to established public guidance and made the methodology accessible from the product. The goal was not to attach a citation to every screen. It was to make the basis for a recommendation inspectable.

WiseCal menu flow: set preferences, scan a restaurant menu, and get tailored suggestions

Privacy as product architecture

Privacy requirements affected more than policy text. They influenced:

  • when an account is required
  • what can exist before authentication
  • what third-party services receive
  • how deletion is surfaced
  • how user controls are organized
  • what information is necessary for personalization

The larger lesson was

Compliance cannot be added after interface design is complete. Methodology, uncertainty, privacy, and language had to be part of the product architecture.

Authentication and persistence

Account creation creates another tension. Asking for an account too early adds friction before the product has demonstrated value. Never asking for one makes persistence across devices harder. I therefore separated early product use from long-term identity.

The first scan does not require account creation. Authentication becomes meaningful when the user wants persistent history, account recovery, or continuity beyond the initial experience. The principle is similar to monetization:

  • Ask for commitment after the product has created a reason for it.

Monetization strategy and product economics

Every successful AI analysis creates inference cost. Unlimited free usage is unsustainable. Charging before demonstrating scan quality damages trust. Elapsed time is a poor measure of product experience. Successful outcomes therefore became the free-usage unit.

I considered a conventional timed trial. I rejected it because someone could start a seven-day trial, use WiseCal once, forget about it, and still reach a billing decision without understanding whether the product is useful. Instead, WiseCal gives every new user five successful scans. The five scans are a product demonstration rather than an ongoing free tier.

WiseCal monetization flow: eleven screens from free scans through result, subscription, and WiseCal Pro

Designing the five-scan demo

  1. 1
    Open

    The camera appears immediately. There is no pricing screen before the first interaction. The user does not need an account to discover whether scanning is useful.

  2. 2
    Complete scan one

    The first successful result appears in full. Nothing covers the payoff. Only after the result does WiseCal introduce the remaining scan count.

  3. 3
    Scans two to four

    The user continues receiving complete analyses. Subscription awareness gradually becomes more visible. Any call to view plans remains optional. The result itself is never replaced by a paywall.

WiseCal monetization flow: first five free scans from mussels camera through summary and dismissible paywall
  1. 4
    Complete scan five

    The fifth successful result still appears in full. Only after the user has received the complete result does WiseCal present the subscription screen. The paywall can be dismissed.

  2. 5
    Gate new creation

    Once the five successful scans have been used, starting another scan requires WiseCal Pro. The camera and other creation actions can lead back to Plans. Existing History remains readable. The scan counter disappears because the demonstration is complete.

WiseCal Pro flow: usage prompts, plan selection, and Welcome to WiseCal Pro success screen

Successful outcomes as the unit of value

The free unit is a successful result, not an attempt. I framed this as a trust model, a value-accounting rule, and a business rule. If WiseCal cannot confidently produce a usable analysis, that attempt does not consume one of the five free scans. Users should not lose free value because the product failed to produce a usable analysis.

Entitlement strategy: gate creation, not ownership

The next entitlement question was what should happen after the demonstration ends. The simplest monetization model would lock the entire product. I chose not to.

Subscription controls whether WiseCal can generate new analysis. It does not control whether someone can read information they already created. After the demonstration:

  • new food scans require Pro
  • new menu analysis requires Pro
  • new product analysis requires Pro
  • existing History remains readable
  • previously generated information remains accessible
  • the paywall remains dismissible

This keeps entitlement aligned with recurring cost.

New inference costs money. Reading an existing journal does not.

It also establishes a clearer boundary around ownership. The journal does not become inaccessible because the user decides not to subscribe.

The hard-paywall tradeoff

A hard lock would offer

Stronger immediate conversion pressure and a simpler entitlement model.

The cost would be

More coercive product behavior and weaker access to previously created user value.

I accepted potential subscription leakage to preserve a clearer relationship between payment, recurring AI cost, and ownership of previously created information.

State design and edge cases

The core loop is intentionally simple. The implementation is not. Several states needed explicit behavior.

  • Failed analysis

    A failed scan does not consume free usage. The user can immediately retry.

  • Low-confidence analysis

    The interface needs to distinguish between a confident identification and an estimate that requires correction.

  • No internet

    Because analysis depends on remote inference, connectivity failure needs a clear recovery path rather than appearing as a recognition error.

  • Hidden calories

    Hiding calorie values should change the presentation without breaking the rest of the nutrition hierarchy.

  • Subscription restoration

    Existing subscribers need a reliable path to restore access without creating a second account or purchasing again.

  • Paywall dismissal

    Dismissal does not create a dead end. The user can continue reading existing History and later return to Plans when they choose.

  • Geographic product availability

    Product scanning is limited geographically in v1 rather than pretending coverage is universal.

Polished happy paths are insufficient without explicit state behavior. Defining these states kept the primary flow connected to how the product actually behaves.

WiseCal Figma workspace: scan flows, summary screens, history, monetization, and profile organized for implementation

Design systems, specifications, and AI-assisted implementation

WiseCal was developed through an AI-assisted engineering workflow. That changed what counted as a finished design. A polished Figma screen was not enough. The implementation system needed explicit answers for:

  • component states
  • empty states
  • loading states
  • entitlement
  • naming
  • persistence
  • errors
  • subscription state
  • geography
  • content rules
  • account state
  • personalization
  • edge cases

I moved through a workflow closer to:

Research → Product intent → Figma → Behavioral specifications → Cursor → Implementation → Git

Figma remained important, but it was no longer the only source of product truth. Visual design defined the system people see. Written specifications carried the behavioral product truth: decisions that could not be inferred reliably from a screen alone. Git preserved those decisions in implementation.

Design systems as a semantic layer

AI-assisted implementation makes naming and semantics executable instructions rather than internal design organization. A vague component name creates ambiguity. An inconsistent token creates ambiguity. Two visually similar states with different meanings need to be distinguishable in language, not only pixels. I treated the design system as a shared semantic layer between product thinking, Figma, specifications, and code. The question changed from:

Can another designer understand this system?

Can another designer, engineer, or AI agent infer the same product rule from it?

That requires a different level of precision.

Friends at a park picnic with snacks and drinks on a blanket in a sunny park
Weightlifter gripping a loaded barbell in a gym
Office desks with monitors, takeout, and drinks during a workday

MVP scope and launch readiness

I scoped v1 around the minimum complete system required to deliver, retain, and monetize the core scanning experience.

  • Camera-first information architecture
  • Food scanning
  • Menu analysis
  • Product capture where supported
  • AI analysis
  • Result hierarchy
  • Correction states
  • Explicit consumption
  • Visual History
  • Nutrition Insights
  • Account and persistence logic
  • Calorie visibility preferences
  • Privacy controls
  • Five-scan demonstration
  • Dismissible paywall
  • Creation-only entitlement
  • Monthly and annual plans
  • Subscription restoration
  • Design system
  • Implementation specifications

The product is still pre-launch. The decisions are implemented. The hypotheses still need market evidence.

Launch metrics and product hypotheses

I defined a launch funnel around activation, repeat behavior, journal formation, demonstration completion, and subscription conversion.

  • Does someone experience enough value from scanning food that they choose to do it again?

The product analytics funnel from first interaction through conversion is: Camera opened → Scan initiated → Successful analysis → Result viewed → Saved or consumed → Second scan → Five-scan completion → Subscription decision

  • Time to first successful scan

    How quickly does WiseCal prove its value?

  • First-to-second scan conversion

    Does the first result create enough value to produce another voluntary scan?

  • Five-scan completion

    Is the demonstration long enough for people to form an opinion?

  • Return to shutter

    Does scanning become retained behavior rather than novelty?

  • Journal accumulation

    Do users create meaningful history across multiple days?

  • Paywall subscribe versus dismiss

    What happens after users have demonstrated repeated intent?

  • Subscription mix

    How do monthly and annual plans perform once the product has shown its value?

The interpretation matters as much as the metrics. If users disappear after scan one, the paywall is probably not the primary problem. If users repeatedly scan but do not subscribe, monetization becomes a more plausible constraint. If people subscribe but do not return to the shutter, conversion may be masking a retention problem. Different failures lead to different product hypotheses.

Reflection

WiseCal changed how I think about 0-1 product design. The interface was only one layer of the work. Product architecture, AI behavior, economics, entitlement, privacy, implementation, and measurement all shaped what could appear simple on screen.

A simple interface can sit on top of complicated economics, regulation, inference, state, and trust. The job is not to expose all of that complexity. It is to make sure the simplicity on the surface is supported by coherent decisions underneath.