Based in Brazil
// 7 min

Building Packybara: Because Every Tracking App in Brazil Has Ads or Bad Vibes

ios swift android kotlin indie-dev ai

Tracking a package on the Correios website is painful. The other tracking apps? Buried in ads. There had to be something better.


The Problem With Every Tracking App

I order a lot online. Mostly international — AliExpress, Shopee, the occasional random store that ships via Anjun or J&T. Every time I wanted to check the status of something, I had to open a different app or website, paste a tracking code, and stare at a utilitarian table of events that told me nothing about how to feel about the situation.

There are tracking apps out there. I’ve tried most of them. They fall into two categories:

  1. Ad-infested — full-screen interstitials between screens, banner ads on the tracking detail, “watch this video to refresh.” The app is free but the experience costs your sanity.
  2. Just not for me — functional but lifeless. Grey tables. Generic icons. No personality. They track packages the way a spreadsheet tracks inventory.

My wife Joy orders a lot — especially international stuff from AliExpress and Shopee. She was always complaining about the tracking app she used. One day I looked at it over her shoulder, saw the full-screen ads and the clunky UI, and just told her: “I’m gonna build a better one for us.” So I did.


Why a Capybara

If you’ve seen any of my projects, you know the capybara is a recurring character. CapyCast has one. Now Packybara has one. There’s a pattern forming and I’m not fighting it.

The capybara isn’t a gimmick. It’s the interface philosophy. Instead of showing you a status enum — IN_TRANSIT, OUT_FOR_DELIVERY, CUSTOMS_HOLD — Packybara shows you a pixel-art capybara whose mood matches your package’s journey. Stuck in customs? The capy looks stormy. Out for delivery? Sunny and excited. Delivered? Party mode with confetti effects.

All the messages are in Portuguese. The capy talks like a friend, not a logistics system. “Relaxa, ta vindo!” is more useful than “Item dispatched from origin facility” when you just want to know if your stuff is coming.


The Stack

Packybara is native on both platforms — not a cross-platform framework, not a shared codebase. Two fully native apps, built with each platform’s best tools.

Android: Kotlin, Jetpack Compose, Material3, Room for persistence, Ktor for HTTP, Hilt for DI. The whole modern Android stack.

iOS: Swift, SwiftUI, CoreData, Observation framework (iOS 17+). Plus Apple Vision for OCR scanning, App Intents for Siri integration, and CoreSpotlight for system-wide search.

Same architecture (MVVM), same product decisions, same capybara personality system. Different languages, different platform APIs, different strengths. The iOS version has camera scanning and Siri. The Android version has Firebase push notifications. Each plays to what the platform does best.

Both share:

  • RapidAPI/PacoteVicio for carrier tracking across Correios, AliExpress, Shopee, Anjun, and J&T
  • PressStart2P as the pixel font that ties the whole identity together
  • 64x64 pixel-art sprites with 4-frame animation, rendered with nearest-neighbor filtering

No accounts, no sign-in. Subscriptions are managed by each platform’s store (StoreKit on iOS, Play Billing on Android). Everything stays on-device.


What I Actually Built vs. What AI Built

I’m not going to pretend I wrote every line by hand. I used Claude Code extensively throughout the project — both Android and iOS. But the split was intentional, same as CapyCast.

I handled:

  • Product identity and personality design
  • Capybara message mapping — which mood, which sprite, which Portuguese phrase for each tracking state
  • Architecture decisions — why CoreData over SwiftData, why 5 packages on free tier instead of 15
  • Pixel art sprite design
  • App Store metadata, pricing, and positioning
  • Every UX decision that required taste

AI handled:

  • StoreKit 2 integration (well-documented API, clear patterns, lots of boilerplate)
  • CoreData model setup and persistence layer
  • Carrier detection regex patterns
  • Localization file management
  • App Store Connect API scripting for metadata and subscription setup
  • Build configuration and XcodeGen project structure
  • App Intents framework wiring for Siri integration

The pattern holds: delegate the patience work, keep the taste work. AI is excellent at implementing a well-specified feature. It’s not excellent at deciding whether that feature should exist.


The Subscription Decision

Packybara has a Plus tier at R$2.99/month. It unlocks unlimited package tracking, faster refresh (5 min instead of 15), delivery alerts, and statistics. The free tier gives you 5 packages with a 15-minute refresh cooldown.

Five packages sounds restrictive. That’s the point. It’s enough to actually use the app and decide if the capybara personality is something you want in your life. If you’re tracking 3 packages from AliExpress and 2 from Shopee, you’ll hit the wall naturally. The upgrade is there when the value is clear.

I deliberately set the price low. This isn’t a SaaS play. It’s a side project that I want to sustain itself. R$2.99 is less than a cafezinho. If someone gets value from it, the price shouldn’t be the reason they don’t subscribe.


Where Things Stand

The iOS app is in review with Apple — Siri integration, camera scanning for tracking codes, delivery automations via Shortcuts, Spotlight indexing, the works. The Android version is still in closed testing on Google Play because Google’s review process moves at its own pace.

I don’t have impressive download numbers to share yet. The CapyCast launch taught me that shipping is the easy part — distribution is the hard part.

What I do have is an app my wife and I actually use every day. I open Packybara to check my packages because it’s genuinely better than the alternatives. The capybara makes me smile when it tells me my package cleared customs. That’s the bar I set, and it clears it.

What’s next:

  • Home screen widget — because checking your package status should be a glance, not a tap
  • Delivery statistics — customs hit rate, average delivery times by carrier, trends over time
  • Whatever Apple announces at WWDC — the App Intents foundation is already in place

The Takeaway

I built Packybara because the existing options annoyed me. Not because they didn’t work — they worked fine. They just didn’t feel like something made with care. Every tracking app I tried felt like it was built to serve ads first and track packages second.

Packybara is built to make you smile while you wait for your stuff. The capybara isn’t decoration — it’s the product.

Sometimes the best reason to build something is that you want it to exist.