Solving a Pervasive Problem with Existing APIs

Ethan Steininger
3 min readJul 23, 2019

Many successful platforms are simply abstractions of more complicated services. Think about how many SaaS products are just layers on top of API’s by Twilio, Spotify, Yahoo Finance, etc. If you can’t think of any offerings to simplify these services whilst providing rich, accurate data then there may be an opportunity.

I built FileFern, a layer on top of existing services, to partially scratch my own itch, which was that:

File management between clients is frustrating. I always hated searching for files in my inbox, only to resend them later on. Email inboxes should not be the system of record for files, but it currently is for attachments.

So, I went ahead and emailed a bunch of attorneys, freelancers, devs, designers, consultants, etc. and found that their problem is consistent with my own. The overarching layer across this problem is email, so the problem statement to solve is: “how might we augment email to improve file management between clients?”.

So I got cracking and started developing the backend. When I do PM consulting, I typically advise to start at the lowest fidelity (post-its, drawings, etc.) and gradually make it higher and higher as each iteration follows a user interview, with a front end design being the highest and last. This is, however, a pain that I wanted solving myself, so I already knew how it would look.

After about a month of development, here’s how the platform works today:

User emails an attachment to their client, including anyone else, and CC’ing “attach@filefern.com

From the homepage

A cron job is run every minute to use the Gmail API and check the attach@filefern.com inbox for emails with an attachment that don’t have any labels. The filtering query is as follows:

Using Gmail’s querying language

Once it finds an email attachment that doesn’t have a label, it pushes the file attachment to a cloud server (via Google Cloud API or DropBox for now) in a unique folder (to the email address) then adds the “Uploaded” label:

Custom drive class with upload method

Then checks to see if any email address within the email chain has already been registered:

Send user_profile dict as kwargs and register

When a new user is registered, a temporary password is emailed to their account and a link to directly access these files accompanies it.

Simple, plaintext email with all relevant info

I used JWT to authenticate users, and so the email message just appends an access token in the file dashboard link:

JWT Token as a URL parameter, client sees and redirects appropriately (based on status code)

When a user accesses this link within a pre-defined expiration window of 24 hours (or they could enter their username/password), they’re redirected to their file dashboard:

Emails, timestamp, email subject, and filename with action items

The share and download buttons are direct calls to the corresponding Cloud storage APIs (download/share endpoints).

FileFern uses HTTPS, encrypts all sensitive information, and protects access with login information.

A simple application that solves a pervasive problem in a novel way.

Some future advancements:

  1. OAuth2 support with Drive and Dropbox so users can store in their own services
  2. Automatic file OCR/Parsing to tag/categorize for easier searchability
  3. Build a PubSub server to listen for new emails

FileFern is free for now, so upgrade your email while it’s available!

--

--