Case study
Adencer: a creator marketplace with the money, the paperwork and the parcels in it
A two-sided platform where brands book content creators: campaign briefs, keyword and semantic creator search, an escrow payment flow on Stripe, French invoicing with credit notes, and parcels tracked to a pickup point. 28 data models, 171 backend endpoints.
My role
This one is a client's platform, not mine. I worked on it as a full stack developer alongside the client's own team, from the end of December 2025 to the middle of June 2026. The product belongs to them, I was not the only person in that codebase, and I am not going to write this page as though I were.

The situation
A brand that wants a creator to post about its product has to do about eight things that have nothing to do with marketing: find the right person, agree a price, pay without either side being exposed, ship the product, approve the content before it goes out, invoice it correctly, and have somewhere to go when it goes wrong. Adencer is the platform that holds all eight in one place.
The constraint
The hard part of a marketplace is never the listing page, it is the money. A brand will not pay a stranger up front and a creator will not work on a promise, so the payment is authorised when the booking is made, captured when it is accepted, and only then transferred to the creator. Every one of those states has to be recoverable: a capture that half went through, a transfer stuck behind an unverified payout account, a booking cancelled after the card was already charged.
It sells in France, so the paperwork is not optional and it is not cosmetic. Invoices are numbered in sequence, carry the amount before and after tax, and a correction is a credit note pointing back at the invoice it corrects, never an edit to the original. A creator's company is checked against the national register, and a withdrawal needs an identity document and a proof of address before any money leaves the platform.
And a large share of these collaborations involve a physical product, which quietly makes the platform a shipping company too: labels, relay pickup points, tracking, and a conversation thread that has to update itself when the parcel actually moves.
What I built
Adencer is live at adencer.com. The parts of it I worked on:
- Campaign briefs carrying the script, the product photos, the promo code and its discount, whether the content needs approval before it is published, and whether a product has to be shipped and returned.
- Two ways to find a creator: filtered keyword search, and a semantic search that turns a plain sentence into an embedding and ranks profiles by similarity against a cached pool, so a brand can describe the person it wants instead of guessing the right tag.
- Instagram and TikTok connected over OAuth, with follower snapshots and derived statistics (engagement rate, average likes, best posting hours) refreshed on a schedule, token refresh handled in the background, and the results drawn as charts.
- The escrow payment flow end to end on Stripe: authorise, capture, transfer, cancel and refund, with Stripe Connect payout accounts for the creators, saved cards and wallet payments, a cart that books several creators at once, and the recovery paths for the transfers that get stuck.
- French invoicing: sequential numbering from a counter, amounts before and after tax, generated PDFs for both sides of the deal, and credit notes that reference the invoice they correct.
- Identity and compliance: company lookup against the national register, VAT status, and a withdrawal flow that collects an identity document and a proof of address before a payout is released.
- Physical shipping with printed labels, relay pickup point search and tracking, wired into the chat so the thread updates itself as the parcel moves.
- A chat that is also the workflow: content submitted, approved or rejected inside the thread, with system messages for the events that matter and file attachments for the ones that need them.
- Reviews and ratings, a dispute flow whose resolutions are real refunds and real transfers, an admin back office, push notifications and transactional email.
The numbers
- 28data models
- 171backend endpoints
- 63screens
- 4payment states, authorise to transfer
- 2languages, French and English
- 4account types
These are engineering counts, read from the project's own files: the entity schemas, the backend function directories, the page components, the payment state list and the locale folders. There is no user count, no revenue and no commission rate on this page. Those numbers belong to the client, not to me, and they are the client's to publish.
What I did and did not do
This is somebody else's product. I was a full stack developer on it for about six months; I was not the only person in the repository and the platform is not mine. If you are reading this to decide whether to hire me, the honest version is that it shows I can work inside a large codebase that already exists, on payment and compliance code, without breaking it. It is not the sentence 'I built Adencer', and I would rather say that here than let you find it out later.
The platform is built on a hosted application platform whose own builder writes a large share of the commits. That is a real trade and worth naming: it is why a marketplace this wide exists at all with a small team, and it also means the codebase is not the work of one pair of hands. A case study that left that out would be selling you the wrong thing.
What I would do differently: the booking record grew to ninety-four fields on a single object, because every new capability (shipping, rescheduling, disputes, invoicing) added its columns to the one thing they all touch. That is the cheapest choice each time and the most expensive one by the tenth time. Splitting shipping and invoicing off it early would have cost a week and saved considerably more.
Stack
- React.js
- Vite
- Base44
- Tailwind CSS
- Radix UI
- Stripe
- Stripe Connect
- i18next
See it
Want something like this?
Tell me what you are building, or what you are still doing by hand, and I will tell you how I would approach it. No commitment.