← InTager · Guides

Rebuilding a 2020 Instagram app in 2026

I built InTager in early 2020, stopped in November and came back to it six years later. Almost nothing still worked. Here's what had broken, what I replaced it with, and what I only found out by shipping it again.

2020: a neural net, then Rekognition, then Instagram login

I started InTager in February 2020 as a small convolutional network trained on Instagram posts to predict hashtags for a photo. It struggled with heavily imbalanced classes, so in March I switched to sending the photo to AWS Rekognition for labels and mapping those labels to hashtags through a synonym dictionary I wrote by hand. The app logged in with Instagram, read your posts and suggested tags for them. In November 2020 I stopped working on it.

What I found in 2026

Three things had broken on their own while I wasn't looking.

  1. Meta switched off the Instagram Basic Display API on December 4, 2024. Login and reading posts both depended on it, and there's no replacement for personal accounts — what's left only serves professional ones.
  2. The domain had lapsed. The API host, the OAuth redirect and the privacy policy link were all hard-coded to it.
  3. The Flutter code wouldn't build. Pre-null-safety Dart, a 2020 beta channel, widgets that no longer exist, and an in-app purchase plugin from someone's fork.

The old App Store listing had to go too. It promised likes and followers without paying and described matching you with people who follow back. That's an engagement scheme; Apple would reject it today, and they'd be right. The new listing just says what the app does.

What I replaced each part with

The gallery instead of Instagram. I wanted the app to work for everyone, and the only API left works for professional accounts only. So there's no Instagram integration at all now: you pick a photo, copy the text and post it yourself.

One model call instead of labels plus a dictionary. The backend sends the photo to Claude with a structured-output schema and gets back several captions in different tones and a list of hashtags in one response. It costs well under a cent per generation. And it can write captions, which no label API ever could.

One Flask process instead of Lambda. The serverless glue, DynamoDB and dead-letter queues went. What's left is a single process under gunicorn on Railway, with SQLite on a mounted volume. A generation is one person choosing one photo — it writes a few rows.

A fresh Flutter project in the same repository, with the same bundle id. Six years of breaking changes were more work than starting over, and what keeps the App Store record (ratings, history) is the bundle id, not the code.

The paywall on the server. The quota is checked before the model is called and charged only after a successful answer, so a provider timeout never costs anyone a generation. Ten are free; after that, one-time packs, verified on the server from signed StoreKit 2 transactions.

No stored photos. The cache key is the SHA-256 of the image plus the language and the mood. Only the hash and the generated text are kept.

I did most of the rebuild together with an AI coding assistant.

Things I only learned by shipping

Then Instagram changed the rules

In December 2025 Instagram announced a cap of five hashtags per post or Reel. A list of twenty or thirty suggestions is now a menu rather than something to paste, and the useful part is choosing the five that describe the photo. I'm reworking the hashtag side of the app around that; for now it suggests a list and you pick up to five. I wrote down how I choose them in How to choose five hashtags for a photo.

If you'd rather not do it by hand

InTager is on the App Store for iPhone and iPad. Pick a photo and it writes a few captions and a list of hashtags for it, in 17 languages. Ten generations are free, no account, then one-time packs.

Get InTager on the App Store

iPhone and iPad · ten generations free · no account · no subscription

Questions

What does InTager use to read the photo?

The backend sends the photo to an Anthropic Claude model and asks for captions and hashtags in one structured response.

Does InTager keep my photos?

No. Only a SHA-256 hash of the image and the generated text are stored, so the same photo is not paid for twice.

Why is there no Instagram login any more?

Meta switched off the Instagram Basic Display API on December 4, 2024, and the remaining API works only with professional accounts. InTager works from your gallery instead, for every account.

More caption guides

All guides