ChronoLens: The Intelligent Archive

Bridging the gap between 19th-century archival rituals and 21st-century machine learning. ChronoLens is a full-stack mobile platform built with React Native and a schema-constrained Gemini Flash pipeline to identify, context-tag, and preserve historical imagery.

0 → 1 MOBILE APP AI/ML

Date

March 2026

Role

Founding Engineer

Stack

Expo / Gemini / Vercel

Status

Production Ready

Overview

The "Detective" in the Machine

Unlike standard photo apps that rely solely on EXIF metadata, ChronoLens uses a schema-constrained Gemini Flash vision pipeline to "look" at the image. It detects clothing eras, architectural styles, and historical objects to infer context even when dates and locations are missing.

This creates a zero-effort archival workflow where the AI does the heavy lifting of categorization, allowing users to focus on the story, not the filing.

"An archival ledger for the age of Intelligence—preserving context where pixels fail."

The Goal

Create a cross-platform application that makes organizing and preserving memories feel meaningful and timeless. The interface needed to balance powerful AI features with a warm, tactile aesthetic that encourages users to explore their history.

THE VISION

Reconnect through time

If you've ever tried to organize years of digital photos, you know how overwhelming it can be. Scattered across devices, stuffed boxes in the attic, lost in cloud storage, with no meaningful way to browse through time. What if it didn't have to be like this?

I desire for ChronoLens to solve these problems. What I have in mind is a beautiful archive platform that helps people organize, preserve, and explore their memories. All your photos, organized by time.

The Engineering Narrative

Three systems made the product credible.

The build story for ChronoLens is not about inflated platform claims. It is about making AI output stable, development previews reliable, and the archival aesthetic reusable across the app.

01 / Schema-Constrained AI Inference

Structured over freeform

Instead of relying on raw text responses, I implemented a schema-constrained Gemini Flash pipeline that returns structured chronology, location clues, confidence scoring, and conflict detection. That keeps the Detective UI stable while the model infers historical context.

02 / Environment-Specific Preview Orchestration

Fast local, reliable remote

To reduce the usual "it works on my machine" failure mode, I built explicit LAN and tunneling paths into the Expo workflow. This preserves high-speed local iteration while maintaining a dependable fallback for stakeholder previews and restrictive network environments.

03 / Tokenized Archival Theme Engine

Design system, not decoration

The Historian aesthetic is implemented as a persisted, state-driven theming layer rather than page-level CSS. Design tokens manage sepia palettes, serif-forward typography, archival paper surfaces, and light-dark variation across the React Native stack.

Welcome screen with elegant authentication flow

Visual Theme Options

Design inspiration from the Beinecke Library

system architecture

Engineering the Archive.

ChronoLens is designed to be a lightweight edge-client, offloading heavy processing to serverless pipelines while keeping sensitive user data localized by design.

The Stack

  • Front-End: React Native (Expo) + NativeWind
  • Local Persistence: Offline-first SQLite model and local caching layers
  • The Bridge: Vercel Edge Functions (Serverless routing)
  • AI Engine: Gemini 1.5 Flash with schema-constrained JSON inference
  • Cloud State & Auth: Supabase (planned persistence/auth milestone)

Privacy & Compliance

  • GDPR Article 6 (Consent): AI analysis is explicit opt-in through user-triggered workflows.
  • Data Minimization: Metadata and payload handling are scoped to inference needs and reduced at the edge.
  • ISO 27001 Access Model: Row-level access controls are defined as part of the Supabase persistence roadmap.
  • Right to be Forgotten: Deletion orchestration is designed as a core requirement for local and cloud artifacts.

Schema-Constrained AI Inference

Unstructured LLM outputs break mobile UIs. To ensure deterministic rendering, the Gemini pipeline is constrained to return a strict JSON schema. This allows the front-end to safely map historical inferences to the UI without parsing errors.

// services/ChronologyService.ts

export interface HistoricalArtifact {
  id: string;
  originalImageUri: string;
  inferredEra: string; // e.g., "Late 1940s"
  confidenceScore: number; // 0.0 to 1.0
  detectedElements: string[]; // ["wool overcoat", "post-war architecture"]
  familyConnections?: string[]; // DB match probabilities
  lumaMotionReady: boolean; // Triggers UI animation state
}

export const analyzeArtifact = async (imageUri: string): Promise<HistoricalArtifact> => {
  // Edge function routing to Gemini pipeline...
};

Development Lifecycle

Phase 01 / PoC

React Native UI, Historian theme engine, and mocked JSON architecture.

Phase 02 / The Bridge

Vercel serverless integration and live Gemini Flash routing.

Phase 03 / Persistence

Supabase Auth, RLS integration, and compliance workflows.

Phase 04 / Sensory R&D

Integrating Luma Dream Machine API for generative photo motion.

Experience the Prototype

The full-stack implementation is live. Experience the Historian UI via our web-preview, optimized for mobile browsers.

Thanks for reading!

View more work