I shipped a product solo, from prompt to 599 users

CompanyAttendy
Timeline2025
My RoleDesign, build, and go to market
TeamSolo
Industry
SaaS
Platform
Web App
Focus
AIVibe CodingGo-to-market
I shipped a product solo, from prompt to 599 users

Context

Since COVID, working from home became the norm. But last year my workplace introduced a hybrid mandate: at least 50% office attendance, or risk losing our annual bonus.

We tap our cards to check in at the office — but the system doesn't share that data back to us. So everyone tracks it manually, juggling spreadsheets, calendars, and counts just to work out whether they're on target.

While exploring AI-assisted coding, I built Attendy to solve it.

Challenges

ChallengeWhy it matters
No visibility into your own attendanceThe office card system tracks check-ins but never shares the data back. Everyone's held to a 50% target with no way to see where they stand.
No lightweight tool to fill the gapExisting tools were heavy enterprise systems or generic calendars — nothing personal, most costly.
Real stakes, no safety netBonuses are tied to the target. A miscount isn't a small error — it's money lost on data you can't check.

Goals

GoalTarget outcome
Solve a real problemGive colleagues a reliable way to track and prove attendance against the mandate
Validate the ideaGet real users and confirm the tool is useful beyond just me
Prove the build modelShow a designer who codes can ship a real product end-to-end, solo
Build in publicUse the project to grow visibility and share what I learned

Results

MetricResult
Reach30,000+ across internal and LinkedIn
Signups599
Monthly active users~150
Support~20 coffees via Buy Me a Coffee

The build

MVP

The MVP started from my own need and what I'd heard from colleagues. I prompted it into a draft in Claude Code, fast.

Initial featureWhat it does
Attendance breakdownOffice vs. home percentage across the month
Target statusClear signal on whether you're meeting your working target
Real-world awareExcludes annual leave and public holidays
Multi-region supportMultiple countries and regional public holidays
Fast onboardingUp and running in under 3 minutes

Tech stack

As a designer with a CS background, I owned the full build — lo-fi concept to deployed app. The stack favours speed and low maintenance: AI tooling to move fast, boring proven services where reliability matters most.

LayerApproachTools
UX / UIConcept to lo-fi, fast — no over-designingChatGPT, Figma
Tech foundationReact Native early, for scalability and lower cross-platform maintenanceReact Native
Style guide integrationDesign tokens → components → code; visual rules became reusable patternsClaude Code
Database & APISchema-first, minimal backend overheadSupabase, Claude Code
AuthenticationKept boring on purpose — reliable verification flowsSupabase Auth, Resend
Version controlGitHub from day one, for traceability and momentumGitHub
DeploymentCheap and quick to set upGo Daddy, GitHub
Landing pageFast signal over polish — ship quicklyFigma Make, Claude Code
PaymentSimple, hosted checkout for optional support — no custom billing logicStripe
AnalyticsLightweight product tracking — signups and basic usage, not a full event pipelinePostHog

Security

Handling data means real risk. I'm not a security expert, so I leaned on trusted tools rather than building from scratch.

RiskHow I handled it
Data stolen or interceptedEncryption at rest and in transit (AES-256, TLS) via Supabase
Users seeing each other's dataRow-Level Security enforced at the database — everyone sees only their own
No accountabilityAdmin access logged for a full audit trail
Users can't control their dataOn-demand account deletion (GDPR/CCPA)

Building on SOC 2-compliant infrastructure kept the data safe and let me focus on the product.

Getting it out

Landing page

A focused landing page prioritising fast signal over polish — clear value proposition, single call to action, built to validate interest quickly rather than to impress. Shipped fast with Figma Make + Claude Code.

Team showcase

I ran a 15-minute showcase for our division-level digital team (~50 people) in person — not just pitching the idea of vibe-coding, but demonstrating a real, shipped outcome. It turned a concept into something tangible the team could see working.

  • ~28 signups came from the session, and
  • 3 colleagues picked up vibe-coding themselves — subscribing to Claude Code and now sharing their own work with me regularly.

The deck I used in the showcase.

Internal platform

I shared Attendy on an internal social platform (with over 50k users).

MetricResult
Seen by25,480
Reactions229
Comments45
Shares2

Takeaways

  • Right audience. Colleagues who actually track attendance — the exact problem Attendy solves. ~5.5x my LinkedIn reach, to a crowd that cares.
  • Real product signal. Alongside the encouragement, people asked for specific features and flagged real bugs.
  • Visibility. 25,000+ colleagues saw a designer who ships working products, not mockups.

LinkedIn

I ran a 4-post series documenting the project from launch to cost breakdown,

PostImpressionsReactionsComments
The launch1,242300
Getting first users667126
The tool stack1,902194
What it cost81091
Total4,6217011

Takeaways

  • Above-average engagement. 4,621 impressions, 70 reactions across four posts — ~1.5% vs LinkedIn's ~0.4% average.
  • Low conversion, as expected. My audience is peers and industry folk, not Attendy's users.
  • Reach ≠ conversation. The launch post reached the most people and got zero comments. The smallest post got the most.
  • Real value was visibility. Positioning myself as a designer who codes and ships.
  • Proof-of-work beat opinion. Visual-led posts (tool stack, launch) travelled furthest.

Analytics

I set up PostHog for lightweight tracking, enough to see signups and usage, not a full event pipeline.

I didn't optimise the analytics or conversion; the initial aim was to prove the build, not grow a funnel. So the numbers here are directional.

Iterating on feedback

I iterated the MVP from two sources: in-app feedback, and social comments on the internal platform.

In-app feedback

The feedback loop has two connected sides:

👥
Customer side

Users land on a community board, not a blank form — they see what others suggested, vote with a tap, and add their own (feature or bug, signed-in or anonymous). Shipped ideas move to a public Resolved tab, so people know they were heard.

Customer side — Post, vote, and see what shipped on the public board.

🧑‍💻
Admin side

Every submission lands in one filterable queue. I publish the best ideas to the board, reject or archive the rest, and mark shipped ones Resolved. Pending → Approved → Resolved.

Admin side — One queue: triage, publish, and mark shipped. 23 submissions came through the board — 17 shipped.

🔄
The loop

Feedback goes in → admin publishes → community votes → it ships → Resolved. Feedback in, transparency out.

Social comments

The post drew 45 comments. Plenty of likes, but enough were feature requests, bugs, and questions to work from. I triaged them the same way as in-app feedback.

TypeFeedbackOpportunity
Feature"Option for users to define their country specific PH — then this can be used for all countries."Custom public holidays
Feature"Import Public Holidays to support different geographic locations that are not standard, and give it a name."Region-level holidays
Feature"Would love to see if compressed weeks/fortnights could be incorporated as filter too."Compressed week support
Feature"Would like to see a running tally v planned attendance."Forecast discoverability
Question"How long will this app continue to exist? What happens to the data if discontinued?"Data policy

Snapshot

Version 2 shipped custom public holidays, region support, and compressed weeks.
Version 2 shipped custom public holidays, region support, and compressed weeks.

Running it

Cost

The entire cost was tooling. Most services are free to start and scale with usage, so running costs stay low until there's real traction.

ToolCost
FigmaUS$20 / month
ChatGPT PlusUS$20 / month
Claude Code MaxAU$169.99 / month
SupabaseFree to start (< 50k MAU)
ResendFree → US$25 / month (after ~100 verifications/day)
GitHubUS$4 / month
DomainAU$5 (year 1) → AU$24.66 (year 2)
Total
Monthly~US$69 / ~AU$275
Yearly~US$828 / ~AU$3,300

Takeaway: For a few hundred a month, a designer who codes can test a real product end-to-end.

Buy me a coffee

Attendy is free, and I chose not to monetise it.

A Buy Me a Coffee link offers optional support to help cover running costs — no paywall, no subscription, just a way for people who find it useful to chip in.

Payments run through Stripe's hosted checkout, kept deliberately simple.

Reflection

If I built an app again, a few things I'd do differently

AreaWhat I'd do differently
DistributionGo where the pain lives, industry forums, other companies, not just my own network.
ConversionPush on conversion as its own problem, not just reach. The showcase converted ~40% of the room; the post seen by 25,000 converted a fraction of a percent.
Product-vs-workUntangle IP and audience early, so monetisation stays an option.
MindsetBe proactive and consistent. Exposure compounds — the more you ship in public, the more comes back.
ToolingA .com/.app domain over .work (a real trust barrier), and Vercel over GitHub for smoother deploys.

The build was never the hard part. Distribution, positioning, and small trust signals decide whether a good product reaches people.

Suncorp Bank — Personalised communication at scale
Suncorp Bank2025-2026

Personalised communication at scale

Who, Where, When: build a comprehensive customer communication system across digital banking channels.

Suncorp Bank — Scaling a Design System into an App Demo Tool
Suncorp Bank2025-2026

Scaling a Design System into an App Demo Tool

Without a consistent, up-to-date reference, call quality and compliance were at risk. I built frontline staff a single source of truth—faster calls, better resolution, no test devices.

Suncorp Bank — Building the systems behind conversion
Suncorp Bank2023

Building the systems behind conversion

Driving home loan conversion through a design system, experimentation practice, and research-led page experience.