We design and build platforms that ship — and keep running.
An independent studio building collector-first products, open-source tooling, and the internal systems that make data and operations reliable.
Products, platforms, open source
All work →Live systems and open-source projects we actively maintain.
Active maintainers of the multilingual open-source Pokémon TCG API and dataset — contributing to data accuracy, the API layer, and the image pipeline.
REST API · community dataset · image pipelineWeb platform, Android app, admin dashboard, AI training pipeline, and set ingestion backend — a full collector platform and the operational systems that run it.
Next.js · Expo · GraphQL · PostgreSQL · ML pipelineWorkflow portal replacing email threads and spreadsheets for a 3D print service — quote requests, file uploads, automated notifications, and admin oversight.
Next.js · Node.js · email notificationsWhat we deliver
Full capabilities →Clear scope buckets. Most engagements combine two or three.
Product engineering
End-to-end delivery: UI, backend, auth, data modelling, and a clean release path.
Platforms & pipelines
Scheduled jobs, ingestion, reconciliation, caching — tooling that keeps data trustworthy.
Integrations
Stripe, Discord, Shopify, WordPress, and external APIs integrated without spaghetti.
UI systems
Consistent component systems, responsive layouts, and UX details that feel premium.
Free tools
All tools →Built for our own data workflows — open for anyone to use.
Multi-source variant editor. Merge Cardmarket and TCGPlayer exports, edit card variant IDs, generate code blocks.
Tampermonkey script that paginates Singles listings and exports a clean product ID map for ingestion.
Fetches all TCGPlayer productIds for any Pokémon set — including variant patterns and printing subtypes.
Upload, validate, and canonically rename card image zips for storage. Supports single-set and batch modes.
Want to build something that lasts?
If you're building something that needs to ship and keep running, let's talk through scope, timeline, and a sensible first milestone.
Typical first step: scope call → single milestone → ship.