ArtTech

Artwell

Connecting Auction Houses to Art Buyers

Period
May 2023 — May 2026
Role
Freelance Fullstack Developer
Website
artwell.nl

About the project

Artwell is an all-in-one platform that enables auction houses to share their inventory online, matching lots with buyers based on their preferences. The goal is to give auction houses — which have traditionally operated very locally — a digital presence and reach that they could never have achieved on their own.

I joined as a freelance fullstack developer and consultant, working alongside a full-time developer on the team. My focus was primarily on the backend, built with NestJS and a PostgreSQL database, while also contributing to the React frontend and the React Native mobile app that auction house staff use to manage their lots on the go.

Beyond development, I took on extra responsibility for setting up the infrastructure and hosting. This included making architectural decisions about how the platform scales as more auction houses come aboard, ensuring the system can handle the growth without needing to be rebuilt from scratch.

The consultancy side of the role was equally important — working closely with the founder to think through product decisions, prioritise features, and identify the right technical direction for a platform that needs to serve both the auction house and the end buyer in a seamless way.

One of the more technically interesting challenges was designing and integrating an LLM-based art categorisation model. Auction lots arrive with inconsistent or missing metadata, so the model automatically classifies each lot by style, period, and medium based on title, description, and imagery. This feeds directly into the buyer-matching logic, surfacing the right lots to the right buyers without requiring auction house staff to tag everything by hand.


What I learned

Artwell gave me the chance to work in a proper NestJS codebase, which deepened my appreciation for its module structure and how it enforces clean architecture in a way that Express doesn't. Working on the React Native app alongside a web frontend also reinforced how much shared logic you can extract when both are written in TypeScript with the same backend. Taking ownership of the infrastructure from the start — rather than inheriting someone else's setup — was also a great learning experience in thinking about scalability and cost from day one.

The LLM work was where my understanding of how language models actually function paid off most directly. Rather than a single prompt trying to do everything, the categorisation pipeline uses multi-stage LLM calls — each step scoped to one job and feeding structured output into the next. Tool use (function calling) was central to this: instead of asking the model to return free text and parsing it ourselves, we defined strict schemas for each category dimension and let the model fill them in reliably. Seeing that approach work cleanly in production — with consistent, structured output — was a real validation of applying a solid understanding of how LLMs reason and where they need constraints to perform well.

Next Project

Navara

AVAILABLE FOR FREELANCE PROJECTS

Do you have a project in mind? Let's talk.

Rizit Development