Back to Case Studies

CASE STUDY
Pinpoint

Client

Pinpoint

Industry

Applicant Tracking System

Product

API documentation generator

Date

2025

Skills

Ruby on Rails

Graphiti

OpenAPI

text image
About Client

Pinpoint is a modern Applicant Tracking System (ATS) platform designed to simplify complex recruitment processes in medium-sized and large enterprises. The system supports HR teams at every stage – from attracting talent and managing applications to onboarding new employees. The solution is characterized by its flexibility, enabling effective recruitment management while ensuring security and compliance with global standards.

About the project

The main goal was to optimize the workflow of Pinpoint developers by fully automating API specification generation. The project included: Creating a plug-and-play tool that automatically generates schemas, query examples, and responses based on resources. Standards Compliance: Ensuring full compatibility of generated JSON/YAML files with the ReadMe.io platform. Configurability: Ability to flexibly manage which resources are visible in public documentation.

Client's Problem

The client uses the ReadMe service to generate API documentation based on the openapi.yaml file, which describes the API in the OpenAPI standard. However, the openapi.yaml file must be manually updated for each change in the API implemented using Graphiti in Ruby on Rails. Graphiti is a powerful framework, but not very popular, so there are no ready-made tools to automate documentation generation. As a result, the client's team spent a significant amount of time manually editing the YAML file instead of actual development work and introducing new features.

Challenges for 2N
  • No access to the main application code. Need to understand how Graphiti defines resources, their relationships and data schemas, based solely on specifications and examples.
  • OpenAPI and ReadMe.io compatibility. Ensure that the specification is generated in an OpenAPI-compatible format (JSON and YAML), so that ReadMe.io retrieves it without errors and can display the documentation in a friendly form.
  • The client indicated an existing gem as a starting point, but it required a number of fixes: fixing several bugs, updating libraries, adapting to newer versions of Graphiti/Rails.
case study image
80+
Endpoints automatically described
What we did

Support for all types of relationships and data in Graphiti

Graphiti allows to define various relationships (has_many, belongs_to, polymorphic, etc.) and field types. It was necessary to ensure that the generator correctly maps them to the OpenAPI specification.

Generating query, response examples and schemas

For each HTTP operation, it was necessary to generate sample requests, responses, and their schemas. Ensuring the readability and usability of these examples in the target documentation on ReadMe.io.

Rails application configuration

We've added an initializer that allows to set basic options, enable/disable individual resources, and modify the documentation with custom code. We've prepared integration instructions in the gem's README documentation.

Outcome

Documentation generation gem: The provided gem allows to easily enable automatic generation of OpenAPI specifications (JSON and YAML) from Graphiti definitions in Rails, including automatically updating documentation in ReadMe.io as part of CI.

What we accomplished:
  • Process automation: manual editing of the openapi.yaml file has become unnecessary. After making changes to Graphiti definitions, a single command is enough to generate up-to-date documentation.
  • Saves developers time: Instead of several hours of manual work with YAML, generation takes a few seconds.
  • Easier onboarding for new developers and building new integrations: Full query and response examples make the API easier to understand, reducing questions and misunderstandings.
ul. Powstańców Warszawy 5
15-129 Białystok
+48 668 842 999
CONTACT US