Deprecated: Return type of I::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 62

Deprecated: Return type of I::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 91

Deprecated: Return type of I::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 71

Deprecated: Return type of I::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 101

Deprecated: Return type of I::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 53

Deprecated: Return type of Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/collection.php on line 80

Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/url.php on line 135
One Tap Less | Interact – Contacts for Power Users

Interact – Contacts for Power Users


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Apple provides apps for most of our necessities; they’re not extraordinary, but get the job done until a better one comes along and empowers us, the users, to get more done. Fantastical did that for the Calendar and now Interact, the newest app by Agile Tortoise, will do it for your Contacts.

All the contacts available in Interact are accessible from the iOS Contacts app since they use the same database. Think of both apps as different ways to reach this database that stores your contacts’ information. Therefore, you keep your contacts safe as Interact does not require an online account and never uploads any data to its own servers.

Managing Groups

There’s a built-in feature of CardDAV (the open standard used by iCloud, Fastmail, Google and other providers to synchronize contact data) called groups, you may have noticed them in the Contacts app where you could select the groups to visualize but could not create any. That’s the cue for Interact.

First we gotta learn about the Context, the place where things wait for you to act on them. It’s the bar below your contacts that display your selected contacts (tap the contact to select it). In the middle you have the character count for your text draft (the first count is for the subject, the second for the body) and by the end there’s the paperclip icon where you can attach photos or documents (from apps with document providers such as Dropbox or Transmit).

The Context. Image provided by Agile Tortoise.

Tap a couple of contacts and tap the button with the Interact icon in the bottom-right corner to get a panel of options, including Create Group with Contacts and Add to Existing Group. Set a name if you’re creating and you got yourself a group1.

Creating Groups. Image provided by Agile Tortoise.

You can load a group or add content to the Context through the URL scheme and, if you hack it a little, you can even do both in Launch Center Pro with this action:

Load Group and Context

Loads Group and Context into the Interact app

Get Action

Using the Context to send messages and attachments to groups reminds me of 2 apps by Contrast, Launch Center Pro's company, Group Text+ and Email+. Both are dedicated to dispatch messages (Group Text+) or e-mails (Email+) as quick as possible to one or more contacts and I wish I could integrate them with Interact since the Contrast apps let me compose messages with locations, the song I'm listening to and its own text snippets. Or maybe a Workflow action arises for a workaround.

The Scratchpad

Another remarkable feature of Interact parses text into contact data, like Fantastical transforms sentences into events. The Scratchpad processes text and assigns tags to what it classifies as valuable information for a contact profile, such as phone number, name, e-mail, address, etc.

For the cases when Interact is unable to identify the information, you can select the text and mark it using Scratchpad Tags, Interact will extract the value prepend the line with a reference to the Scratchpad Tag. You can even use them as a custom form to build contact profiles, adding tags on demand and filling it as you go. You can find a list with all tags and a more detailed input on them (like adding labels) in the Agile Tortoise site.

Using Scratchpad Tags. Image provided by Agile Tortoise.

You can also populate the Scratchpad with the URL scheme, this action allows you to do so from Drafts:

Parse Contact in Interact

Send text of draft to Interact to be parsed as contact data in the Interact scratchpad. Once parsed, the values can be added as a new contact or added to an existing contact.

Get Action

The Scratchpad is great for email signatures, site footers and other information scattered across the web, I wanted to solve a different problem: what if someone handles you a business card?

OCR Business Cards and Parse in Interact

Update on Jan 15: I urge you to update to the new version. It has better error handling, stores the API key in the iCloud keychain and downsizes images larger than 4 MB.

I stumbled upon a tweet by Federico Viticci and met Microsoft's Project Oxford, an API capable of, along other things, scanning images and extracting text from them.

You gonna need an API key and Pythonista. The latter just released its 2.0 version and its action extension is fantastic, so I urge you to get it. The former requires a Live account. After logging in, visit this URL and subscribe to the Computer Vision API. You should be redirected to the Subscriptions page where you'll find your Primary Key and Secondary Key, and check your monthly quota. Copy your Primary Key (click Show, your key is not a row of Xs) and run the following script, also available in a Gist. The script will request the token the first time and save it in your iCloud keychain afterwards.

OCR Image to Scratchpad in Interact

Prompts for an image and processes it through Project Oxford to extract text from the image. On the return, opens Interact with the scanned data in the Scratchpad

View Script

Running the script will open you camera to snap a picture of your business card, if you want to pick an image from the camera roll, cancel and you'll be prompted to select one. The script will send the image to Project Oxford and return the text, since images are a heavy resource, this trip back and forth may take a few seconds. When the response arrive, Pythonista will redirect you to Interact with the text from the image in the Scratchpad. The script also works from the extension, however it can't open Interact in that case, so it sets the clipboard to the text received from Project Oxford instead.

Conclusion

Interact is like someone attached a jetpack to iOS Contacts and turned it on, overall a great enhancement aiding the worst parts of contact management. It is out today with an introductory price of $4.99 and if you deal often with your acquaintances, it's a no-brainer with the quality you can always expect from the apps by Agile Tortoise.


  1. You can also create an empty group and add contacts (look for the icon with the plus and the sticky figures).