Seevy template is a fully responsive no-code automated resume builder app. Information for the CV can be auto-extracted from the user's social media account. Resumes are generated as a web page or can be downloaded as a pdf file. The platform has built-in payment processing systems using Stripe, and an affiliate or referral program that uses the Coinbase API to make commission payouts.
Fully responsive pages and dashboard
Near real-time resume editing and preview
Social sign-up and data import for Twitter, Facebook, Google & LinkedIn
Referral system & Custom affiliate dashboard
User’s data contains the usual profile info (Photo, Name, Email Address) and also contains additional fields relating to usage, payments, referrals etc.
Each user has a single resume and it is attached to their user object. Each resume has in addition to normal fields, list of jobs (experience), list of schools (education) list of awards (awards) and list of core skills & other skills (skills).
A reward is created when a referred user signs up for a paid plan or when a user referred by an affiliate renews their paid plan.
A payout is created when a user or affiliate requests to withdraw their rewards/earnings.
After a user signs up, the social network they used is stored to their object and they are forwarded to the dashboard. Upon loading the dashboard for the first time their account is setup and marked as such before they can start using the app. The setup process is as follows:
Profile info is saved to user
Resume is created with info from profile
Resume is saved to user
Job is created (LinkedIn Only)
Job is added to resume (LinkedIn Only)
User is marked as setup:yes
Workflow is scheduled to create jobs & schools (Facebook only)
You would need to create an app/project in the developer console of each social network:
For Facebook, Linkedin & Google ensure that you add all live & test URLs for these pages /u/signup, /u/signin & /dashboard as authorized redirect URLs.
Twitter only requires the base URL.
You can check the Bubble forum or the developer guides of the social networks if you’re having trouble.
Note: The permissions requested by the Facebook authentication API will require your app to be reviewed by Facebook. If you like you can switch to Bubble’s own Facebook plugin or simply reduce the scope of the Oauth setup.
Certain pages utilize a different navigation method and are explained below.
Sign up & sign in
The /u page houses sign up and sign in. The same buttons are used for sign up and sign in with conditional workflows for new users. The text & button CTAs on this page change based on the suffix of the URL which are either /u/signup or /u/signin
Navigation in the dashboard makes use of custom states and conditions on the main groups to hide or show them.
Affiliates and Admin Dashboard
Navigation in this case makes use of custom states, conditions and also URL modification. Navigation buttons change the state and current URL accordingly. When condition is true workflows also change the menu custom state on page load based on the URL content.
The editor on the left side of the user’s dashboard is where they make all changes to their resume visible on the right.
The editor makes use of custom states to show and collapse sections and uses conditional workflows to prevent editing when the resume is published.
Sections & Forms
The Basic, Contact & Profile sections contain inputs that are binding on parent element’s thing.
The remaining sections with their own thing type have repeating groups and and buttons for adding or deleting new things. The things can then be editing within the repeating groups with parent-binded inputs.
Note: For a better UI/UX, the photo uploader is custom styled with opacity: 0 and placed above a button while a group shows the uploaded photo.
A resume can only be edited, downloaded or publicly viewed when it is published. Download and Web version buttons are hidden when the resume is unpublished while the editor sections are disabled when the resume is published.
When a resume is published, a new PDF is generated and the download PDF and web version buttons become visible again.
Each time a resume changes from unpublished to published, a new PDF is generated. This is done by converting a webpage to PDF using an external API. The /liveresume page is the webpage used to generated the resumes by passing the unique ID of the resume as a parameter.
The group holding the resume is hidden when the resume’s owner doesn’t meet certain conditions.
The current PDF Generation API is an act on Apify.
Create an account on apify.com for free
Add this act to your account https://www.apify.com/yinka/PDF-Generator
Go to https://my.apify.com/account#/integrations and copy your API token
Paste this token in the token parameter of the PDF API connector call. For that you need to go to the "Plugins" tab, then find "API Connector" plugin, then "Apify" group. Inside there will be "PDF" calls, once you expand it you'll see the POST URL inside of which you need to insert your token (after "runs?token=") as can be seen on this screenshot
Each user has a referral code created upon sign up. This code is the same as their resume’s share code and is changed when the share code is changed.
The referral system makes use of HTML5 local storage. Existing users can invite their friends with their referral link which includes their code. When their friends visit this link loads a dedicated page which grabs & stores the referral code to HTML5 storage.
If the visitor proceeds to sign up, a condition is true workflow will retrieve the stored referral code and a custom event will add the referrer to the newly sign up user.
When this newly signed up user subscribes for a paid plan, a reward is created, with the user’s referrer as recipient, in the API workflow triggered by Stripe’s Invoice payment successful webhook.
Payouts/Withdrawals of earnings are made in Bitcoin using the Coinbase API.
Steps to set it up:
Create a Coinbase account
Create an Oauth2 application at https://www.coinbase.com/settings/api
Make sure you add the redirect URLs like this
Replace the base URL with your own app’s base URL & ensure to add the live versions above it when you go live
Load the /manage/dashboard?debug_mode=true page and setup the Authentication with the Connect your Coinbase account button
Go to https://www.coinbase.com/accounts and select your preferred Bitcoin wallet/account
Copy the account id from the URL and paste it in the Coinbase send API connector call
Send at least $2 as a test transaction to complete setup
This template has a dedicated affiliate panel with extra features. Affiliates are able to sign up with Facebook, Twitter or Google and then submit an application form for manual approval by the admin.
Their status will remain as pending until admin approval and it becomes approved. Approved affiliates can then set their referral code and create a discount coupon after which their status becomes active and they can view the main affiliate panel.
New users are automatically subscribed to the free plan. The limitation of the free plan currently is in number of PDF downloads. When the number is exhausted they would no longer be able to download PDFs from the dashboard or web version of their resume.
Payments for the Pro plan are powered by Stripe using a combination of Stripe.js plugin and API calls. The API calls allows for canceling subscriptions on period end, uncancelling them, creating coupon codes and creating subscriptions with affiliate coupon codes applied.
For first time subscribers, their plan is updated to Pro by a front-end workflow once the card is created successfully. The renew API workflow triggered by Stripe’s webhook for Invoice Payment Successful ensures the Pro Plan is actually paid for and sets the user’s plan to Pro as before after which it processes rewards if need be. If the payment ended up not being successful the user is downgraded by the downgrade API workflow.
This template uses two Stripe webhooks. One for invoice payment successful and one for unsuccessful.
To configure them
Click add endpoint
For Invoice payment successful, URL should be https://yourappbaseurl.com/api/1.1/wf/renew and filter event type should be invoice.payment_succeeded
For Invoice payment unsuccessful, URL should be https://yourappbaseurl.com/api/1.1/wf/downgrade and filter event type should be invoice.payment_failed
You will find over 60 notes for this template in Bubble. They are for workflows and fields that need explaining. Mostly in User data fields, dashboard workflows and API workflows.
Tip: You can find the above workflows & elements using the search bars in design tab or workflow tab as the case may be.