ShareTalent: a portfolio and discovery network for mission-driven creative work, on Bubble.io.

After the seventeen-month engagement on ShareTalent's first product wound down, the founder commissioned a new product for the same brand: a portfolio and discovery network for mission-driven creative work. The brief paired pixel-perfect Figma implementation with workload-units performance on Bubble.io, two non-negotiables that usually trade against each other. The product is live at sharetalent.co with a discovery feed, a talent directory, a jobs surface, and an n8n resume-import flow with a human review gate that the workload-units bill has not noticed.

book a call Visit ShareTalent

$ status live · ongoing
Client
ShareTalent
Timeline
2025 to 2026, ongoing
Stack
[Bubble.io][n8n][Gemini][Stripe][Postmark][Mailchimp]
Brief from client Pixel-perfect Figma implement on time, performance non-negotiable
Role Lead developer 2025 to 2026, ongoing
Status Live discovery feed + talent directory + jobs surface at sharetalent.co
The ShareTalent homepage with the line Share your mission-driven work, a search bar with suggestion chips like Computer Vision, Bubble, Node.js, Python and Social Design, category tabs across Discover, Graphic Design, Marketing, Audio, Product, Video, Data, Copywriting, and Strategy, and a grid of work samples below

2025 · second product, same brand

A new product, on the back of a long relationship

After the seventeen-month engagement on ShareTalent’s first product wound down, the founder came back with a new brief. He was building a different product on the same brand. The trust earned on the first engagement had already settled the question of who would lead the build. “We are building this new product, based on our experience with you, we want you to lead this. We will design Figma and create tasks for you. You implement them on time with pixel perfection. Performance is non-negotiable, even on Bubble.io.” Two non-negotiables, on a platform that usually trades one for the other.

The new product is a portfolio and discovery network for mission-driven creative work. Talent post work samples (case studies, design pieces, videos, blog posts) under tagged categories. Nonprofits and mission-driven organisations browse the discovery feed, click into a talent profile, and click “Work with [Name]” to start a conversation. The transaction is intro-first, not contract-first. A jobs surface sits alongside the directory, where both talent and companies can post paid roles. Agentic AI resume import does the heavy lifting on talent onboarding. The product is live at sharetalent.co.

Two non-negotiables, both load-bearing.

The brief paired pixel-perfect Figma implementation with workload-units performance. On Bubble.io those usually trade against each other. A pixel-faithful design means dense container trees, conditional visibility for every state, repeating groups stacked inside repeating groups, and on-page workflows that recompute as the user touches anything. All of those land in the workload-units bill. The cheap way to keep WU low is to simplify the UI; the cheap way to ship the Figma is to ignore WU and ship the heavy version. The brief refused both shortcuts.

The work was holding both lines from the first page. Every layout was a faithful read of the Figma. Every workflow that touched the database was scoped, paginated, and server-side. Conditional visibility ran off pre-computed state instead of live searches. Repeating groups paginated against indexed constraints instead of loading the full collection. The pattern repeated across every surface the user could touch.

A data model designed around the UI, not the other way around.

The Figma led. The data model followed. That inverts the textbook advice (model first, UI second) but it was the right call for a UI-first product. The discovery feed needed to render work-sample cards with author, category, and save state in one repeating-group pass. The talent directory needed to render a talent’s profile with their work samples embedded, in one pass. The job-matching surface needed to score talent against jobs across three taxonomy axes, in one query. If the data model had been normalised the textbook way, every one of those surfaces would have paid for the joins on every render.

The schema was designed in the other direction. Denormalise where the feed needs to be fast. Keep the relations where the admin operations need them clean. Three taxonomy lists (Causes, Categories, Skills) sit at the centre of matching, search, and filter. Each is implemented as an Option Set for the label and a Data Type for the cross-relations between lists, which keeps the static labels cheap to read and the relations queryable.

The discovery feed and the talent directory.

The homepage is the discovery feed. Search bar at the top. Suggestion chips beneath it rotate through real categories pulled from the live data. A horizontal tab bar of nine high-level categories sits below that, with a filter button on the right for the finer cuts. Then the grid. Each card is a work sample, with the talent’s avatar, name, and a category tag on the meta row. The card layout is the same on every surface, and that consistency is doing work; a search result, a category filter, and an “explore” view all return cards the user has already learned how to read.

The talent directory is the second front door. A grid of talent cards, each one showing the person’s avatar, headline, location, a row of their work samples inline, a row of their skill tags, and a “Work with [Name]” button. The directory answers “who could I commission?” the way the discovery feed answers “what work is being shared?” The “Work with [Name]” CTA is the conversion event on the directory side. Pressing it captures the nonprofit’s brief and routes the message into the talent’s inbox. The intro is the first product action; the contract relationship, where it happens at all, comes downstream of a conversation that has already gone well.

The ShareTalent Explore Share discovery feed, a 3-column grid of work-sample cards with the search bar and category tabs above
The ShareTalent talent directory at sharetalent.co slash talent, with a Find the talent your nonprofit needs hero, related-role filter chips, the category tab row, and a talent card for Anish Gandhi showing five embedded work samples and skill tags including App Development, Web Development, and Full Stack Development
An individual talent profile page on ShareTalent v2 for Anish Gandhi, with the headline AI Engineer over a tagline of Claude Code, Bubble.io, and n8n on the right, the talent's avatar and bio on the left over a desk photograph, and the Work tab open with the start of the embedded work-sample grid below
The Your Work tab on a ShareTalent talent profile for Matt Lombardi, showing two work-sample cards from his Holy Donuts video series
The Saved Work tab on a ShareTalent talent profile, showing three saved work-sample cards including a New Donor Email Welcome Series, a video, and an image
A work-sample detail page on ShareTalent v2 for the Holy Donuts Podcast by Matt Lombardi, showing the deck about Christian nonprofit donor engagement, tags including Content Creation, Interview, and Podcast Creation, a Get in touch button alongside Share and Save, and a YouTube embed for the podcast episode below

Resume import via n8n, with a human review gate.

Talent onboarding is the surface where most of the AI work sits. A user uploads a resume. The file goes into an n8n workflow where an AI agent extracts the structured fields and matches them against the live database (the three taxonomy lists, the option sets, the related records). Before any backend workflow writes anything, the user sees a popup that shows the AI’s proposals field by field and lets them choose which to keep. The write only happens after the user signs off.

Two calls in that flow are worth naming. The first is that Bubble.io’s Data API stays closed. The naive integration would open the Data API to make the n8n workflow easier, but that exposes a write surface broader than the workflow actually needs. The closed-Data-API decision is a security one I will not trade away. Every write is server-side through backend workflows that respect Privacy Rules.

The second is that the user reviews the AI’s proposals before they land. AI extraction is good but not perfect; a wrong job title or a misclassified category in the search index degrades discovery for every nonprofit browsing for that talent. The popup is the seam where AI gets to be useful without being trusted.

Resume to profile, with the gate in the middle
  1. Resume upload PDF or a LinkedIn URL
  2. n8n agent extracts the structured fields
  3. Taxonomy match against the live option sets
  4. Review popup the user keeps or drops each field
  5. Backend write server-side, Privacy Rules respected

The Data API stays closed. Every write is a backend workflow.

The My Profile editor on ShareTalent v2 with a Resume Import card at the top inviting the user to paste a LinkedIn URL or upload a PDF, an Upload Resume button, and structured fields below for Avatar, Full name, and Location

The jobs surface, paid roles for talent and companies.

The third surface in the top navigation is Jobs. The model is simple. Both talent and companies can post paid roles; nonprofits browse the listings; applicants bring their work-sample portfolios with them by default. The pricing has two self-serve tiers plus a white-glove placement service the founder runs alongside the platform for higher-touch hires, each with a 90-day satisfaction guarantee.

Job posting does not require onboarding. A company creates an account, adds the role, and the post is live. The work-sample model gave the jobs surface a credentialing layer the marketplace did not need to build from scratch, because anyone applying brings a portfolio with them by default.

$ cat pricing 2 self-serve · 3 placement
  • Standard Job$90 / mo
  • Featured Job$180 / mo
  • Freelancer placement$1,500
  • Junior to Mid FTE placement$5,000
  • Senior to Director FTE placement$9,000
The ShareTalent Jobs surface with the line Find your work, for good, two CTAs for Post a Job and Let us find your next hire, a search bar, and a grid of featured job cards including a Marketing Specialist role at LifeWise Academy and a Director of Multimedia Communications role at Lutheran Social Services of Illinois
The Your job listings page on ShareTalent v2, with Open Jobs, Closed, and Drafts tabs, and two job rows below: a Standard Job for Social Media Content and Design Specialist Full-Time, and a Featured Job for Marketing Specialist Full-Time
The ShareTalent hire-talent pricing page with the heading Find talent that cares about your cause, two pricing cards for Standard Job at $90 per month and Featured Job at $180 per month, and a Resumes don't tell the full story tagline below
The features panel on the ShareTalent hire-talent page, illustrating portfolio-first hiring and cause-based candidate filtering
The Frequently Asked Questions section on the hire-talent page covering posting, editing, upgrades, cancellation, and refunds
The ShareTalent white-glove Talent Recruitment landing page with the heading Build the mission-driven team you deserve, a 90-day satisfaction guarantee line, and a Book your free hiring consultation CTA, with a Hiring the right talent shouldn't feel like a leap of faith section below listing the Endless Sifting, Culture Gamble, and Bad Hire risks
The Your path to the perfect hire in 3 simple steps section on the recruitment page, showing Step 1 Define Your Perfect Hire, Step 2 We Handle the Entire Search, and Step 3 You Meet the Vetted Finalists, with a More than a platform A placement partner section below
The Simple flat-fee pricing section on the recruitment page with three tiers: Freelancer Placement at $1,500, Junior to Mid FTE Placement at $5,000, and Senior to Director FTE Placement at $9,000, each with the same benefits list and a Ready to build your dream team CTA below

A Pro subscription for talent, on top of the free profile.

Talent get the platform free. The Pro subscription, Share Talent Pro at $6 per month, adds two things on top: a Search Boost that lifts the Pro profile in the discovery and directory rankings, and access to the Share Services Shortlist, a curated talent list the recruitment side draws from when matching against client briefs. The price is deliberate. It is low enough that an early-career talent will subscribe to be visible; it is also low enough that it is not the platform’s primary revenue model. The job-posting business and the white-glove recruitment service carry that.

The Share Talent Pro upgrade page with the headline Stand out to the organizations changing the world and an Upgrade to Pro CTA
The Share Talent Pro pricing card showing $6 per month billed monthly cancel anytime, an Upgrade My Profile button, and a Frequently Asked Questions section with collapsed entries about Search Boost, Share Services Shortlist, header image, and long-term commitment

SEO architecture, built into the page model.

The product has SEO baked into the data model in a way most Bubble.io builds do not. Every image alt on the public surface follows the same pattern: a descriptive primary line, then a separator, then the platform marker. Every talent avatar carries an alt of the form “[Name] - Find Nonprofit Freelancers and Talent | Share Talent”. Those alts are not hand-typed per page; they are generated from a template that pulls the relevant fields off each record. Page titles, meta descriptions, and Open Graph tags follow the same pattern.

The payoff is that adding new work samples and new talent profiles ships with their SEO already correct, rather than requiring a follow-up audit pass. The product team can publish new content without the question “did we remember to set the alts?” coming up.

Workload units, optimised across every search surface.

The brief said performance is non-negotiable. On a workload-units billed platform, that lives or dies on the search layer. Every list a user sees is backed by a search. Every conditional visibility that depends on the database is a search. Every action that branches on a record state is a search. The default Bubble pattern (load all rows, filter client-side) is the cheapest path to ship and the most expensive path to run. The whole product was built away from that default.

None of these are exotic tricks. They are the discipline of writing the search as if you are paying for every row read, which on Bubble’s workload-units pricing, you are.

$ optimise --pass=search 6 surfaces
  • Page-load searchesscoped to the minimum the page needs, not the maximum the data type allows.
  • Repeating groupspaginated against indexed constraints rather than fetching the full collection.
  • Conditional visibilitycached into custom states at page load instead of running on every paint.
  • Action-level searchesnarrowed by the constraints they were going to filter on anyway, so the database does the work.
  • Daisy-chain filterscollapsed into single queries where the chain was a join in disguise.
  • Job matchingacross the three taxonomy axes compiled to a single ranked search rather than several filters and a sort.

Account surfaces: signup, login, billing, notifications.

The account layer is the part of the product that has to feel boring and reliable. Signup is Google, LinkedIn, or email + password, in that order, because the audience already lives on the first two. Login mirrors signup. The settings panel splits into Login & Security, Notifications, Membership & Billing, and Help & Support. Notifications are individually toggleable, split into app alerts and marketing alerts. Membership & Billing reads off Stripe directly; the same panel manages billing and cancels the subscription.

Nothing on these screens is novel. The point is that they are not the part of the product that fails under load, because the data they read is small and the workflows they run are simple. The hard performance work lives upstream on the discovery feed.

The ShareTalent signup page with the line Welcome to Share Talent, a Sign Up with Google button, a Sign Up with LinkedIn button, email and password fields, and the terms of service line at the bottom
The ShareTalent login page with Welcome to Share heading, Login with Google and Login with LinkedIn buttons, email and password fields with a Forgot password link, and a Login button below
The ShareTalent Login and Security settings page with an email address field showing a verified badge, a password field with a Change action, and a Danger Zone panel for account deletion at the bottom
The ShareTalent Membership and Billing settings page with a Powered by Stripe badge, a Pro subscription panel showing the renewal date and the $6 per month price, and Manage billing and Cancel subscription buttons, with a Post a Job affordance below
The ShareTalent Notifications settings page with an App alerts group toggling Saved Your Work, Your Weekly Recap, New Job Posted, Weekly Job Recap, and You Received a Message, and a Marketing Alerts group below with toggles for Product Updates, Product Onboarding, Promotions, Share Your Work, and Tools Tips and Tricks

What changed

The new product shipped publicly on a Bubble.io codebase that holds both the brief’s lines at the same time. The Figma lands faithfully on every surface. The workload-units bill holds at the UI-first scale. The discovery feed, the talent directory, and the jobs surface read off a data model that was designed around the UI rather than against it. The Agentic AI resume import does the work without being trusted; the popup is the seam. The SEO is in the page model, not in a follow-up audit. The relationship that started with the first ShareTalent engagement, and that earned the brief on this one, continues as the senior Bubble.io developer on the platform.

The pattern of the engagement is the part I would do again.

$ cat pattern
  • Take the brief at face valuewhen the brief is honest.
  • Let the data model serve the UIwhen the product is UI-first.
  • Run the workload-units pass at design time,not after the bill jumps.
  • Keep the Data API closedwhen the n8n agent does not need it open.
  • Trust the agent with the workand the user with the review.