mbvlabs.

WORK

Marketplace search for Candy.io

Worked as Senior Software Engineer for Candy.io, extending OpenSearch-backed marketplace search through a GraphQL API consumed by a Next.js frontend.

Client

Candy

Year

2023

Focus

Search, Backend Systems, Full-Stack Product Engineering, Marketplace, GraphQL API, Admin site, OpenSearch, Elasticsearch, GraphQL, Next.js, RPC

Marketplace search for Candy.io

Overview

Candy.io needed to keep improving discovery inside its marketplace. The search layer sat across a search engine, a GraphQL API, and a Next.js frontend, so changes had to improve product behavior without making the API contract or frontend integration harder to reason about.

What I did

Search Backend Systems Full-Stack Product Engineering Marketplace GraphQL API Admin site OpenSearchElasticsearchGraphQLNext.jsRPC

How I approached it

I worked close to the existing marketplace architecture and treated search as a product workflow, not just a backend query problem. The useful work was understanding how OpenSearch data, GraphQL fields, and frontend expectations fit together, then extending the system in a way that kept each layer clear and testable.

Deliverables

OpenSearch-backed marketplace search improvements, GraphQL API extensions, Next.js frontend integration support, search behavior refinements, and RPC-based admin site functionality.

Outcome

Candy.io gained more capable marketplace search exposed through the existing GraphQL API and consumed by the Next.js frontend. The admin site also gained extended functionality through RPC work, supporting internal operations alongside the customer-facing marketplace.

Senior engineering inside a marketplace search stack

I joined Candy.io as a Senior Software Engineer for a focused engagement on marketplace search and related admin functionality. The product surface was familiar to users, but the implementation crossed several layers: OpenSearch for retrieval, GraphQL for the public API contract, and a Next.js frontend for the marketplace experience.

My role was hands-on implementation with enough architectural care to keep the search work aligned across those layers. A search change was only useful if it could be represented cleanly in the API and consumed predictably by the frontend.

Extending search without treating it as an isolated service

The core technical work was extending marketplace search on top of OpenSearch, the AWS-led fork of Elasticsearch and Kibana. That meant working with search indexes and query behavior while also respecting the product model exposed through GraphQL.

I approached the work from the marketplace outward: what users needed to discover, how that translated into searchable data, what the API needed to expose, and how the frontend would consume the result. That kept the search implementation tied to product behavior instead of becoming a detached backend concern.

Connecting OpenSearch, GraphQL, and Next.js

The search API was exposed through GraphQL and consumed by a Next.js frontend, so the integration work mattered as much as the search engine configuration. I worked on the API surface and the surrounding implementation so the frontend could use the extended search functionality without taking on unnecessary knowledge of the search backend.

That boundary was important. OpenSearch is powerful, but marketplace code should not leak search-engine details into every consuming layer. Keeping the GraphQL contract clear made the feature easier to evolve and easier for the frontend to depend on.

Supporting internal operations through RPC

Alongside the marketplace search work, I also worked with RPC to extend functionality in the admin site. That work supported the operational side of the product: internal tooling needed to move with the marketplace without becoming a separate source of friction.

The engagement was a practical mix of search engineering, API design, frontend integration support, and admin tooling. The common thread was keeping product behavior, implementation details, and internal workflows aligned across a short delivery window.