02 · Marketplace · Non-Profits

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.

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

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. AI-assisted 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 ShareTalent Explore Share discovery feed, a 3-column grid of work-sample cards with the search bar and category tabs above

The discovery feed in full. Work-sample cards, paginated against indexed constraints, with author and category metadata denormalised onto the row.

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 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

The talent directory. Each card carries the talent’s work samples inline, so the answer to “who could I commission?” lives next to the question.

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

An individual talent profile. The headline and the toolchain row sit above the work, the bio sits to the left, and the embedded work samples begin immediately 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 Your Work tab on a profile. The talent’s published case studies, videos, and projects, in the same card pattern as the discovery feed.

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

The Saved Work tab. Talent bookmark inspiration; nonprofits bookmark candidates. Same data type, two read patterns.

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

A work-sample detail page. The author block sits where a price would on a marketplace card, because the conversation, not the contract, is the next step.

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.

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 My Profile editor with the Resume Import affordance at the top. The AI extracts; the user reviews; the backend workflow writes.

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 (Standard Job at $90 per month, Featured Job at $180 per month) plus a white-glove placement service the founder runs alongside the platform for higher-touch hires (Freelancer at $1,500, Junior to Mid FTE at $5,000, Senior to Director FTE at $9,000, 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.

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 jobs surface. Standard and Featured tiers, both with category tags pulled from the same taxonomy that powers the discovery feed.

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 poster’s view: your job listings. Open, Closed, Drafts. Standard and Featured jobs sit side by side under the same admin.

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 hire-talent pricing page. Standard Job at $90 per month, Featured Job at $180 per month, both self-serve.

The features panel on the ShareTalent hire-talent page, illustrating portfolio-first hiring and cause-based candidate filtering

The features panel on the hire-talent page. Portfolio-first hiring, not resume-first.

The Frequently Asked Questions section on the hire-talent page covering posting, editing, upgrades, cancellation, and refunds

The hire-talent FAQ. Subscription mechanics, edit-after-post, upgrade Standard to Featured, cancellation behaviour, all answered without a sales call.

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 white-glove recruitment landing. A different revenue model from the marketplace, run on top of the same platform.

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 three-step recruitment process. Define the role, run the search, present 2-3 vetted finalists. The 90-day guarantee, the 40+ hours saved, and the mission-alignment-first principle sit alongside.

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

Recruitment placement pricing. Three tiers from $1,500 to $9,000, all with the 90-day satisfaction guarantee.

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

Share Talent Pro for talent. Visibility boost and Share Services Shortlist access, on top of the free profile.

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

Pro pricing. Six dollars a month, secure checkout via Stripe, cancellation in the same panel that subscribes.

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.

The optimisation pass ran across every surface. Page-load searches scoped to the minimum the page actually needs, not the maximum the data type allows. Repeating-group searches paginated against indexed constraints rather than fetching the full collection. Conditional-visibility searches cached into custom states at page load instead of running on every paint. Action-level searches narrowed by the constraints they were going to filter on anyway, so the database did the work instead of Bubble’s evaluator. Daisy-chain filters (one search’s result feeding into the next search’s constraint) collapsed into single queries where the chain was a join in disguise. The job-matching surface, which scores a talent against a job across the three taxonomy axes, compiled to a single ranked search rather than several filters and a sort.

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.

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

Signup. Google and LinkedIn first because the audience already lives on both. Email-and-password is the third option.

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

Login. Same auth providers, mirrored shape.

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

Settings, Login and Security. Email change, password change, and the Danger Zone live behind verification.

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

Settings, Membership and Billing. Stripe powers the subscription; the cancel-subscription affordance sits next to manage-billing.

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

Settings, Notifications. App alerts and marketing alerts split into two groups, each individually toggleable.

What changed

Brief from client Pixel-perfect Figma implement on time, performance non-negotiable
Role Lead Bubble dev 2025 to 2026, ongoing
Status Live discovery feed + talent directory + jobs surface at sharetalent.co

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 AI-assisted 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. Take the brief at face value when the brief is honest. Let the data model serve the UI when the product is UI-first. Run the workload-units pass at design time, not after the bill jumps. Keep the Data API closed when the n8n agent does not need it open. Trust the agent with the work and the user with the review.