H
iOS App · Live on the App Store

FoundType

Photograph letters in the wild. Compose them back into type you own.

Download on the App Store
Timeline May 2026 — Present
Role Product Designer & iOS Developer
Team Solo Project · Shipped to the App Store
Tools SwiftUI, Vision, Core Data, AVFoundation, MapKit, Figma

FoundType turns the letters you photograph in the street into a personal A–Z library — each glyph cut out on device, filed by character, tagged with where and when you caught it. Then you compose them back into Reels videos, ransom notes and word walls: typography made entirely out of places you've been.

01

The Gap

Photographing found type is already a habit. The camera roll is where it dies — buried in thousands of unrelated shots, never sorted by character, impossible to make anything from. Font-identification apps answer what typeface is this. Nobody answered what can I build from what I collected.

Camera roll

4,812 photos deep

Unsorted, unsearchable, and nothing you can build with.

FoundType

18 of 36 collected

Every letter filed by character, dated, and pinned to a street.

02

The Loop

Three verbs, and the third one sends you back out. Composing a word exposes the letters you're missing, which is what turns a one-off scan into a habit. Every screen exists to keep that circle turning rather than to end it.

01 · Catch

Point the camera

Vision outlines each glyph live; you tap the keepers or draw your own box.

02 · Collect

Letters file themselves

Sorted A–Z with the original photo, the date and an optional map pin.

03 · Compose

Set a word in your type

Export it as a Reels video, a ransom note or a word wall.

↻ the word you can't spell yet is the next hunt
03

What Shipped

v1, on the App Store — the complete loop from capture to export.

Viewfinder detail — corner brackets snapped around the letters on a street sign, with the prompt “catch letters from the wild”

Live Letter Detection

On-device OCR outlines every glyph in the viewfinder in real time, with perspective-corrected boxes for letters shot at an angle.

Library detail — the A to Z progress bar reading 197 letters caught, 36 of 36 unique, above the first rows of collected letters

A–Z Progress

The library doubles as a scoreboard: 26 letters plus 10 digits, with a completion moment when you close the set.

Map detail — collected letters pinned as thumbnails across Somerville and Boston

Letter Map

Every catch can drop a pin, turning the collection into a travel record of the streets you found it on.

Compose detail — the three export modes listed as reels, ransom note and word wall, each with a hand-drawn illustration

Three Compose Modes

Reels video, ransom note and word wall, each exporting across five aspect ratios.

04

Design System

The interface is the frame. The user's letters are the art.

So the chrome is monochrome and set in lowercase Geist Mono. Coral is reserved for progress — nothing else gets to use it.

Palette
#FFFFFF Paper
#1A1A1A Ink
#E4554A Coral
#F7F7F7 Surface
#E0E0E0 Hairline
Typography
FoundType Geist Mono Bold 28pt
my library Geist Mono Regular 22pt
catch letters Geist Mono Light 16pt
51 letters caught · 18 / 36 unique SF Pro Text 15pt
Compose Montserrat SemiBold 14pt
05

The Pipeline

No backend, no account. Every frame stays on the device from capture to export — the six stages below are the whole of it.

01

Frame in

AVCaptureVideoDataOutput
02

Find the glyphs

VNRecognizeTextRequest
03

Deskew the quad

CIPerspectiveCorrection
04

Lift off background

VNGenerateForegroundInstanceMaskRequest
05

File and sync

Core Data + CloudKit
06

Write the MP4

AVAssetWriter

SwiftUI · MVVM · all Vision work off the main thread, cancellable

06

Screens

Scan

Camera-first launch, with a confirmation step before anything is saved.

FoundType — live letter detection in the camera viewfinder
FoundType — confirming and adjusting detected letters before saving

Library

Sorted A–Z with a progress bar. Open a find to see its letters, where it came from and when.

FoundType — my library, a full A to Z set caught across 197 letters, shown as a grid of found words
FoundType — a found word split into its individual letters, with capture time, location and cut quality
FoundType — map view showing where each letter was collected

Compose

Pick a mode — reels, ransom note, word wall — then tune the layout and save straight to Photos.

FoundType — compose mode picker offering reels, ransom note and word wall
FoundType — ransom note composer spelling a word from cut-out letters, with align, background and letter edge controls
FoundType — word wall composer scattering found words across a poster, with a letter tray and aspect ratio controls

Illustrated states

Cold start and first export decide whether anyone comes back, so both get a drawing rather than a spinner.

FoundType — empty library state with hand-drawn illustration
FoundType — save confirmation with confetti, a hand-drawn illustration and a route back to the library
07

On the App Store

I wrote and art-directed the listing. Every letter in the mockups is a real catch from my own library. See it live.

App Store screenshot — Catch letters from the wild App Store screenshot — Build your own alphabet App Store screenshot — Turn letters into videos App Store screenshot — Map your letter journey
08

Decisions

On-device Vision

not a cloud OCR API

Capture works in a subway station, nothing is uploaded, and v1 shipped without a server.

gainedPrivate & offline

gave upRaw accuracy

Two copies of every letter

not the cutout alone

The cutout makes composing possible; the original photo is what makes the letter yours.

gainedThe original moment

gave upStorage cost

AI suggests, you decide

not fully automatic capture

Boxes stay draggable. A missed letter annoys people far more than a slow one.

gainedControl over every catch

gave upSpeed

Camera first

not a feed and a follower count

The app opens on the viewfinder. The only thing to look at is what you collected.

gainedTime spent making

gave upEngagement

Warm copy

not “AI-powered scanning”

The UI says “go find some letters in the wild”. The intelligence is invisible on purpose.

gainedA human voice

gave upKeyword reach

Back to Work Next Project