Pitchichi helps large companies and start-ups choose their communication agency. From 2021 to 2023 I designed and built the platform's API, authoring 471 of its 783 commits. It was a small team effort: the public site and the React back office were mostly written by another developer, and a third developer supported the back end.
In pictures
The project in detail
The product revolves around a structured agency directory. Each profile carries the agency's positioning, founding year, minimum budget, headcount, location, team and office photos, a portfolio of work and case studies. I modelled this data in 18 Django models across six apps (agencies, customers, case studies, promotion content, brief wizard, users), served by a Django REST Framework API with JWT authentication, sign-up and password reset by email.
I also built the brief wizard: a sequence of single or multiple choice questions that records an advertiser's answers to steer the agency search. To launch the directory, I wrote bulk import commands for agencies, contacts and customers, plus a command that compresses the images uploaded by agencies.
On the operations side, I set up Celery and Redis for background jobs, Flower to monitor them, and three Docker environments (local, pre-production, production) behind Traefik. GitLab continuous integration runs the test suite, spread over 18 pytest test files.
The public site was designed for search, with category list pages such as "best luxury, fashion and design agencies" and case study pages. It is still online at guide.pitchichi.com. The main site pitchichi.com has since been rebuilt by the client on another platform: it is no longer our code.
Most of the work happened in 2021, with more than 670 API commits that year, followed by maintenance and improvements until 2023. Throughout, every change started from a numbered ticket, on its own branch, and went through a merge request before being deployed to pre-production and then production. That discipline made a fast launch possible, then let the product evolve without breaking the live directory.

