Inspiration
Recently, my younger child has started saying more words and reaching new milestones. Watching those changes often makes me wonder, “What was my older child like at this age?” Finding that stage in my older child’s history meant calculating the period and searching through thousands of photos, again and again.
That parenting experience became imomtte (이맘때), an iOS app that helps parents rediscover photos of their children at similar stages of growth. 이맘때 is a Korean expression meaning “around this time,” or, in this context, “at this age.” imomtte is a phonetic rendering of the Korean name used for the product.
I am not a professional mobile app developer and currently work outside the software industry. imomtte is my first mobile app. With ChatGPT and Codex, I turned a problem from my own family life into a working product.
What it does
Parents choose a reference photo, then either revisit the same child at an earlier age or place siblings side by side at similar ages.
imomtte searches the relevant date range and combines the distance from the target age with visual similarity from Apple Vision Feature Print. It recommends related photos while leaving the final choice to the parent. A completed photo pair can be saved as a memory, exported as an image, placed in a sharing template, or shared with family and friends.
Photo analysis runs on the user’s device. imomtte does not upload the user’s photo library to a separate server or to OpenAI.
What I added during OpenAI Build Week
Before Build Week, imomtte already supported photo discovery, recommendations, saving, and sharing. During Build Week, I used Codex with GPT-5.6 to connect individually saved comparisons into a cumulative Growth Timeline and refine the core experience.
The new timeline separates the two photos in each saved comparison, assigns them to the appropriate child, and recalculates age from the child’s registered birth date and each photo’s capture date. It groups only ages containing saved photos, deduplicates repeated assets using stored PhotoKit identifiers when available, and lets a parent tap a photo to reopen the original comparison. A new Growth Highlights card summarizes the child’s earliest and most recent saved moments.
When a local photo URI becomes stale, the app uses its stored asset identifier to resolve the correct photo again. If the photo is no longer accessible, it shows an unavailable state rather than substituting another image.
Recent memories now have a more prominent place on the home screen, starting from a recent photo requires fewer decisions, and comparison, save, and share actions are easier to find. I also adjusted colors, spacing, and card styling across the four main tabs to make the Warm Beige visual language more consistent.
The Build Week work is separated from the pre-event baseline in Git. The full Build Week diff and key implementation commits are available for review:
- Baseline:
80b247b b400002— refined the comparison creation flow1e7085f— implemented the Growth Timeline and unit tests7a40a6c— added Growth Highlights, safer photo recovery, and visual refinements
How I built it
imomtte uses React Native, Expo SDK 55, TypeScript, Expo Router, PhotoKit, SQLite, and a custom Swift native module using Apple Vision Feature Print.
The recommendation pipeline combines birth dates, photo capture dates, a configurable window around the target age, and on-device visual similarity. A local SQLite cache prevents previously analyzed photos from requiring the same expensive work again.
The Growth Timeline transforms existing saved comparisons locally. It does not rescan the full photo library, require face identification, or add a server. This kept it private and achievable within Build Week. Validation includes TypeScript checks, linting, and 16 passing unit tests covering child assignment, age grouping, newborn labels, deduplication, and invalid data.
How GPT-5.6 and Codex worked with me
I used ChatGPT with GPT-5.6 as a product planning and design partner. It helped me clarify the user problem, choose a realistic Build Week scope, write the Growth Timeline requirements, and explore UI hierarchy, Korean product copy, and design alternatives. Early mockups gave Codex a clearer implementation target.
I used Codex with GPT-5.6 as an architecture and implementation partner. Codex inspected the existing codebase, translated the requirements into data transformations and screen components, connected timeline photos back to their original saved comparisons, wrote tests, debugged real-device and PhotoKit issues, and applied visual refinements.
This was an iterative collaboration rather than one-shot code generation:
real parenting problem → requirements and design with GPT-5.6 → architecture and implementation with Codex → iPhone testing → design review → fixes and validation
I did not apply every AI suggestion unchanged. I tested ideas with real family photos and on actual iPhones, then made the final product and implementation decisions myself.
Challenges and lessons
At first, much of the mobile terminology and tooling was unfamiliar. Working through unfamiliar concepts step by step helped me understand what I was building instead of simply accepting generated code.
One early approach used face embeddings to distinguish between children. In real family photos, young children change quickly and relatives can look alike, producing false positives. After testing it, I chose a simpler product direction: combine dates with overall visual similarity and let the parent make the final choice. I learned that the most technically complex solution is not always the best user experience.
I initially developed and tested only on my own iPhone. When friends joined through TestFlight, different iPhone models, display settings such as dark mode, and iCloud photo-library configurations revealed edge cases that did not appear on my device. One tester’s large iCloud library exposed a major slowdown when high-resolution assets were repeatedly loaded. Smaller PhotoKit requests, controlled native concurrency, and local caching significantly improved performance.
The most rewarding result was seeing family members become genuinely moved by comparison images showing the children at similar ages. It reminded me that privacy, responsiveness, and user control matter because they support the real goal: rediscovering an emotionally meaningful family moment.
What’s next
Next, I plan to incorporate final TestFlight feedback, add more sharing templates, memory notes, timeline exports, and English localization, and prepare for an App Store release. After the iOS release, I plan to begin an Android version and explore video comparisons. My long-term goal is for saved comparisons to grow into a private family record that becomes more valuable over time.
Built With
- codex
- expo.io
- gpt-5.6
- react-native
- sqlite
- swift
- typescript
Log in or sign up for Devpost to join the conversation.