CardCanner

Built it and run it · since May 2026 · Live

A texting service that turns a photo of a business card into a saved contact, with no app or account needed.

CardCanner public home page showing an illustrative text conversation that turns a business card photo into a saved contact.

CardCanner is a phone number you text a photo of a business card to. It reads the card and texts back a contact file you tap to save. There's no app to install and no account to make, because your phone number is your account. It's built for someone in the trades whose cards pile up on the truck dashboard, so every reply has to make sense in about three seconds with one glove still on.

The first commit went in at 12:58 a.m., and the second, six and a half minutes later, put the privacy policy online. The legal page came that early because American carriers won't deliver a business's texts until they've approved the business, and their reviewers check its pages for exact phrases, right down to "Reply STOP to opt out."

The first live test got no reply. It was blocked with error 30034, which means the number wasn't approved for business texting yet. By the end of day one the repo had 25 commits: the texting flow, a web page for browsing saved cards, a sign-in with no password and CSV export, though none of it could send a text yet. Agents wrote that code from my plan, and a second model tried to break it, which is how I build now. Carriers approved it on day five.

What a card costs

Later I had an agent run ten test cards through the live AI steps and add up what each card cost, texts included. Texting came to about 84% of it and the AI to about 16%. Most of the AI cost was the step that looked up what the card left out, and that lookup charged the same fee whether it found the person or not. Measuring all of this cost about fifteen cents.

The smallest fix was punctuation. The instant "got it" reply, which goes out in under a second while the card is still being read, had one em dash in it. A single em dash pushes a whole text out of the basic character set phones use and into one that fits 70 characters per segment instead of 160, so that 89-character reply was billing as two texts. That one em dash was costing almost as much per card as all the AI. Every outgoing text lost its em dashes, and a test keeps them out.

Finding people again

Phones and free apps already read business cards. Going by 45 Reddit threads on the subject, what people come back for is remembering why they met someone and finding that person again. Months later you can text CardCanner something like "who was that drywall lady?" and get her contact back, with your note and the date you scanned her card.

In week seven, CardCanner's home page showed off a question like that. One of my review agents ran the page's exact wording through the real search and got back "I couldn't find anyone matching that." Its note to me said "Fix the product, not the copy," so I did, the same day. Now a test sends the home page's example through the real texting path, word for word, and fails if the reply ever stops matching the page.

Then there's the app, which is a little awkward. The vision doc was finished about an hour and a half before that first commit, and it hasn't changed a word since. It says the people who win at this will be the ones who refuse to ever build an app. By week ten there was an iPhone beta anyway. The beta added tags, saved views, dictated notes and a nudge when someone you'd met was going cold, all on the same contact book your texts fill. Texting still works without it.

Milestones Carrier approval for business texting · TestFlight beta

Stack

Languages
TypeScript
Product
HonoTwilio

Text mePaul Mikulskis

(617) 599-0775

If this sounds like your situation, tell me what's going on.

This number usually answers in a minute or two, in my voice, and every conversation comes straight to me.

Text (617) 599-0775
Email me