Intro
If you work in the web, likely you’ve heard of indie hackers like Pieter Levels (levelsio).
If you haven’t, he’s known to create fast and simple systems that, when they work, get customers (and money) relatively fast (in a matter of a few clicks). As he claims
All my websites/apps/startups/projects are built by just me with vanilla HTML, JS with jQuery, PHP and SQLite
levelsio
Examples of that include
In a world where there are a lot of companies struggling to even get the first customer (some after years of investment and adding more capabilities), levelsio’s approach is inspiring.
What if I told you that you too can create such systems? In fact, you can create them in a way that gets you the payment even faster…
How? Let’s find out…
The project
The project is called “Chinese Medicine Tongue Analysis”.
As the name implies, it will be used to do chinese medicine tongue analysis (something acupuncturists do) based on an image sent by the customer.
The customer sends us the email and an image, pays us 10€ to Stripe, then we will upload that image in OpenAI to get the analysis (specially handy if we have a persona for that purpose already) and send back an email with the results.
Note that I didn’t invest time integrating with OpenAI here. Why? Because that’s not needed right away – we can do that manually when the system is in testing phase to see whether customers really like it or not. If they do and the number keeps increasing, then probably in that state we can consider saving that manual labor. The users doen’t care if you need to pull a lever in the background, as long as they get what they paid for.
Here’s a visual of how the system will to work
For the frontend we will need two .html pages. One landing page where the customer can send the email and the image
and another showing the payment was successful
There is a script.js
in the landing page too which will make the page interact with the BE; will explain its purpose shortly. All of these files are stored in Amazon S3.
For the backend logic we will need three endpoints – one to receive the email and image and upload to S3 (it’ll require a specific buket (all the data in that bucket is removed after X amount of hours) and a custom policy with s3:PutObject
permission), one for the payment / creating the Stripe Checkout Session (will need the Configuration of an Environment variable) and another for post payment processing (listening for Stripe checkout.session.completed
and using AWS SES to send the emails). For this I used API Gateway with Lambda Proxy Integration, allowing the API Gateway to invoke the Lambda function.
The script.js
used in the landing page, essentially does user input validation, and calls / presign-url
and /payment
. The user will then see Stripe checkout page
If the payment is successful, the user is redirected to the success page. Also, I configured a Stripe webhook that will call the /post-payment
responsible to send two emails – one to the customer informing the payment was successful, and another to me informing the customer paid and the image.
From there I go to the image URL or to S3 get the respective tongue image.
then go to ChatGPT and ask it to do the tongue analysis ensuring the results follow a specific format. Once that’s ready, time to send the email to the customer with the results!
Try it yourself?
If you will to build a similar system for a different use case, as Justine Moore observed, you can do color analysis based on an image and suggest you which colors to wear / use.