Case Study · Vibe Coding

ATO Joe Case Study - From a Simple Idea to a Helpful Tax Receipt App

How a casual chat with my wife turned into ATO Joe: My Vibe Coding Story

The Story

How a Casual Chat with My Wife Turned into ATO Joe: My Vibe Coding Story

It all started with a simple offhand remark from my wife. She was staring at a growing pile of business receipts and asked if there was an easy way to capture them all and send everything off to our accountant Joe at tax time. That one comment sparked the whole thing.

Over the next couple of weeks—mostly after work and one weekend—I vibed away and built ATO Joe. What began as a personal solution is now a simple, helpful web app that anyone can use to snap receipts, build reports, and stay organised for tax time.

ATO Joe makes expense tracking painless. Snap photos of your receipts, let the AI handle the heavy lifting, automatically generate compliant reports, securely store files in your preferred cloud service, and email everything straight to your accountant. No more shoebox chaos or last-minute scrambles.

Product

Key Features

Receipt Capture & AI Analysis

Snap a photo or upload images/PDFs. The AI extracts merchant, date, amount, line items, GST, and suggests ATO-friendly categories for deductions and work-related expenses.

Smart Report Generation

Automatically compiles everything into clean, ready-to-use summaries suitable for tax returns or BAS preparation.

Flexible Storage & Sharing

One-click integration with Google Drive, Dropbox, and Xero. Files stay under your control.

Email Automation

Powered by Resend, it sends polished reports directly to your accountant (or any email) with attachments.

PWA Experience

The app is a Progressive Web App (PWA), so you can “install” it to your phone home screen directly from the browser—no App Store required. Works smoothly on mobile for on-the-go snapping.

Privacy-First Design

A core principle was not storing any user data on our servers. Receipt images and extracted data are processed transiently and saved only to the user’s chosen cloud storage (Google Drive, Dropbox) or handled client-side where possible. The backend still uses row-level security (RLS) for any temporary or admin functions, ensuring strong protection even in edge cases.

Build story

How I Built It with Vibe Coding

I’m not a full-time developer, but vibe coding made the project feasible in my spare time. The workflow was simple yet powerful: describe what I wanted in plain English, let AI tools generate the code, test it immediately, and iterate with precise follow-up prompts.

I relied heavily on LLMs (especially Claude and similar models) for rapid code generation across files. Early prompts defined the overall structure (“Create a PWA receipt scanner with AI extraction and cloud integrations”), while later ones handled specifics (“Implement secure Google API and Dropbox OAuth flows with no persistent server storage” or “Add Resend email functionality with proper attachments and error handling”).

Technical Details (from the codebase):

  • Frontend React-based Progressive Web App (PWA) with service workers for offline capability and install prompts. Tailwind CSS for clean, responsive styling.
  • Backend Node.js/Express (or equivalent serverless setup) for handling secure API routes. Focused on transient processing rather than data persistence.
  • AI & Vision Multimodal models for receipt OCR, data extraction, categorization, and confidence scoring. Handled tricky cases like faded prints or multi-line items through iterative refinement.
  • Integrations
    • Google APIs (Drive + OAuth)
    • Dropbox SDK
    • Xero for accounting export
    • Resend for reliable, branded email delivery
  • Security & Architecture No user data stored on servers. Row-level security (RLS) implemented where any backend logic touches data. Environment variables for secrets, secure OAuth flows, and client-side emphasis for privacy.
  • Tooling Git for version control (essential for safe experimentation), deployed to a scalable hosting platform. The full repo is public here: https://github.com/marcodounis/ATO-JOE-APP.

This vibe coding approach let me move incredibly fast. I could implement a feature, run into an integration snag (like OAuth scopes), paste the error back to the AI, and have a fix in minutes. Human oversight ensured everything stayed accurate, secure, and truly useful for Australian tax contexts.

Watch

See AI in Action

45 seconds — snap a receipt, let AI extract the details, and confirm with one tap.

Reflections

What I Learned

  • Rapid Development Wins

    A functional, privacy-focused app with real integrations came together quickly through short, focused vibe sessions.

  • Power + Responsibility

    AI accelerates building, but reviewing architecture, security (especially privacy and RLS), compliance, and edge cases is non-negotiable.

  • User-Centric Focus

    Prioritising PWA for easy mobile access and zero server storage made the app feel trustworthy and lightweight.

  • Broader Insight

    Vibe coding lowers the barrier for solving everyday problems. With domain knowledge and disciplined iteration, meaningful tools emerge without huge teams or budgets.

ATO Joe started as a family fix and evolved into something practical I’m happy to share. It shows how a simple need, combined with vibe coding and the right integrations, can create real value.

If you’re tired of receipt stress or experimenting with AI development yourself, drop a comment—I’d love to hear your experiences!

Ready to try ATO Joe?

Snap receipts, stay organised for tax time, and keep your files in your own cloud.

Built with vibe coding in spare time. Questions? Reach out!

Try ATO Joe