Home / Anonymous Agent
6 min read

Connecting brands and creators with a decentralized social media marketing platform for iOS

Scope
End-to-end UX/UI, design system, information architecture
Timeline
8 weeks
Role
UX/UI Designer
Tools
Figma, Cursor, SwiftUI, Xcode
Overview

Anonymous Agent is a dual-sided marketplace app where merchants publish marketing campaigns and creators discover, apply for, and fulfill those contracts directly within the product. The app removes the agency layer that traditionally sits between brands and influencers, replacing brokered negotiations with a self-service workflow that handles contract terms, applicant review, deliverable submission, and payment release inside a single interface.

I was hired to work on the end-to-end UX design, from user research and information architecture through interaction design, visual design, and the construction of a scalable component library.

Context and Market Research

Infrastructure for influencer marketing was built for top of market

The existing landscape of influencer marketing tooling had been engineered around managed-service platforms and enterprise campaign software, both of which assumed substantial marketing budgets and dedicated brand teams. For smaller merchants and emerging creators, that infrastructure remained financially and procedurally inaccessible. Most participants defaulted to direct outreach over Instagram or email, which produced inconsistent terms, no shared system of record, and no enforcement mechanism for payment.

Enterprise platformsMid-market / self-serveAgency-mediatedMicro & informalHigh structure · Low accessibilityLow structure · Low accessibilityLow structure · High accessibilityLowAccessibilityHighEnterprise budgets, agency-mediatedSelf-serve, accessible pricingStructureCreatorIQEnterprise / custom pricingTraackrEnterprise / $30k+/yrLater InfluenceManaged service / $500+/mo#paidMid-market / $1k+/moGrinMid-market / customAspireMid-market / $2k+/moUpfluenceSelf-serve / $478+/moBoutique agencies15–30% of campaign spendTalent mgmt.Commission-basedSocial CatSelf-serve / $49+/moCollabstrFree / commission per dealShoutcartPer-post / low costDM outreachFree / no terms or enforcementAnonymous Agent
The Problem

Compressing operational complexity into a self-serve product

The lifecycle of an influencer-merchant partnership (discovery, negotiation, agreement, tracking, submission, approval) was often conducted across channels like DMs, email threads, screenshots, spreadsheets, etc. There was no canonical record either side could refer to on context, no shared source of truth connecting one stage to the next, and both sides absorbed the cost of reconstructing the partnership by hand each time it advanced.

The design problem was to construct a structured environment that held the partnership as a single object, with each stage of the lifecycle anchored to it and visible to both sides. That structure had to be substantive enough to replace the coordination methods participants were already using, but had to avoid imposing the procedural overhead of enterprise tools.

Scattered across disconnected channelsInstagram DMsEmail threadsScreenshotsSpreadsheetsDrive linksVoice memosAnonymous AgentPartnership lifecycle as a single object1DiscoveryFiltered feedStructured matching2ApplicationPortfolio attachedPipeline queue3AgreementDefined termsShared record4TrackingLifecycle statesDeadline reminders5SubmissionNative uploadTied to deliverable6ApprovalApprove or reviseRecorded inlineA continuous record visible to both merchant and creatorMessaging, notifications, and status threaded across all six stagesSix stages, previously scattered across whatever channels participants defaulted to, relocated into one structured environment.
User Journey Mapping

Mapping two parallel journeys onto one product surface

I mapped both user journeys as paired swimlanes, tracing user actions, system responses, edge cases, and error states across every stage of the partnership lifecycle. Working through both journeys at this level of granularity surfaced the core contact points, moments where edge cases on one side cascaded into errors on the other, and the overall rhythm each role would experience as they moved through the product.

Stage
Onboard
Define campaign
Publish
Review applicants
Active contract
Approve work
Release payment
User actions
Sign up as merchant
Verify business
Connect payment
Set scope and goals
Define deliverables
Set compensation
Preview campaign
Confirm and publish
Browse applicants
View profile and rates
Accept or decline
Monitor progress
Message creator
Review submission
Approve or revise
Release payment
Rate creator
System responses
Account created
KYC verification
Stripe connected
Validates inputs
Saves draft state
Estimates budget hold
Holds budget in escrow
Indexes to discovery feed
Notifies matched creators
Surfaces ranked applicants
Pushes accept notification
Generates contract
Tracks deliverable status
Sends deadline reminders
Surfaces deliverable
Logs revision requests
Notifies creator
Releases escrow
Updates rating
Closes contract
Edge cases
Pending verification
Save and exit draft
Edit live campaign
Pause or cancel
Zero applicants
Creator goes silent
Multiple revision rounds
Partial release
Errors
Verification rejected
Invalid budget
Payment auth failed
Creator declines
Deadline missed
Dispute opened
Refund triggered
Stage
Onboard
Discover
Apply
Accept contract
Produce work
Submit deliverable
Receive payment
User actions
Sign up as creator
Build profile
Connect payout
Browse feed
Filter and search
Save favorites
Review brief
Set rate or pitch
Submit application
Receive offer
Review terms
Accept or counter
Track timeline
Message merchant
Save draft
Upload content
Add caption and links
Submit for review
Confirm payout
Rate merchant
System responses
Account created
Imports social handles
Stripe Connect setup
Ranks by relevance
Persists filters
Pushes new matches
Validates eligibility
Sends to merchant queue
Logs application state
Surfaces contract
Records signature
Activates timeline
Tracks deadlines
Stores draft uploads
Sends reminders
Validates file specs
Routes to merchant
Locks edits on submit
Funds released
Updates rating
Archives contract
Edge cases
Incomplete profile
Empty filter results
Withdraw application
Counter-offer rate
Offer expires
Request extension
Revision requested
Payout delayed
Errors
Identity verification fail
Feed load failure
Application rejected
Contract terms invalid
Merchant cancels
Upload size exceeded
Payout method invalid
Objectives

How might we design a continuous partnership environment with coordination and trust?

The work of running a partnership is mostly the work of staying coordinated through it: knowing what has been agreed to and what's supposed to happen next. Reconstructing coordination from scratch at every stage creates friction within the relationship, compounded by miscommunication or missed deadlines. The design challenge was to build an environment where coordination accumulates across every stage, creating a shared record.

Single source of truth
Replace the scattered coordination across DMs, email threads, screenshots, and spreadsheets with one structured environment.
Symmetry across both sides
Build the merchant and creator experiences as paired, mirrored flows where every action on one side produces a response on the other,
Structure without overhead
Strip the procedural weight of enterprise tools, giving smaller merchants and emerging creators structure without friction.
Information Architecture

Building the dual-sided experience based on divergent workflows, mental models, and interaction patterns

Working through the architecture meant moving between flow diagrams, low-fidelity wireframes, and structural exploration — testing how onboarding, marketing-plan creation, contract approval, and contract completion would fit together for the merchant, while in parallel mapping how discovery, application, contract acceptance, and submission would fit together for the creator.

Exploring the information architecture through low fidelity flow diagrams and wireframes.
Final Screens
01. Merchants create campaigns

Financial impact is visible during campaign creation

Campaign creation is the most consequential financial action a merchant takes inside the app, since publishing reserves funds that will not return to the available balance until the campaign concludes. The reserved-on-publish panel sits above the primary CTA and updates as the merchant adjusts the creator coverage percentage and spot count, showing the dollar amount being committed and the resulting balance side by side. Decisions made with their consequences already on screen produce fewer corrections downstream and treat the user as a thinking participant rather than a form-filler.

02. Creators discover and apply to campaigns

Eligibility resolved before the pitch begins

The detail screen for any campaign opens to a description, the deliverables, and an eligibility checklist that compares the creator's actual values against the campaign's requirements. The application form opens only after the creator is aware of their fit, which protects creators from wasted pitches and protects merchants from queues full of unqualified candidates. Eligibility shown upfront establishes the application as worthwhile of attention.

03. Merchants approve creator applications

Algorithmic recommendations based on machine learning

Algorithmic ranking is helpful when the merchant has dozens of applicants to review. The fit score on each applicant card is decomposed into segments for audience, engagement, and proximity. Showing the components alongside the verdict makes the recommendation legible and lets the merchant weigh dimensions according to their own priorities rather than deferring to a single number.

04. Creators submit deliverables

Visibility into what comes next

Submitting deliverables is a threshold moment in creator partnerships: the work is done but unapproved, the merchant's response is pending, and the payout sits behind a review the creator cannot influence further. The contract screen places the submission action inside the full sequence of states so the creator can see which steps are complete, which is in progress, and what is still pending on the merchant's end. Carrying the lifecycle visibly through the submission flow itself reduces the asymmetry between the two sides.

05. Merchants and creators message in-app

Messaging threaded into the partnership

Every thread anchors to its linked contract, with the deliverable status and lifecycle position visible in the conversation header rather than buried in message history. Filters prioritize threads requiring action over threads that are merely active, based on the unique time-based priorities of the partnership. Binding conversations to their contracts produces continuity that holds across the partnership.

Testimonial

We had a wonderful experience working with Vasuki on the design of our mission critical project. Vasuki is talented, considerate, organized and responsive. Vasuki always quickly grasps the gist of the product concept, listens and accommodates to our feedback. The UI system is modern and sleek. The deliverables are highly finished. We highly recommend Vasuki if you are considering evolving your UI/UX system.

Mike WangEngineering — Anonymous Agent