Efalia Engage
Senior Full-Stack Engineer
2018 — 2025
Seven years turning a citizen participation platform into a fully customisable SaaS, through a gradual Rails API migration, an in-house form builder, AI-powered moderation, and the infrastructure underneath it all.
- 7 years
- Building and scaling the platform
- Rails API
- Migrated from a Rails-rendered monolith, gradually
- SaaS
- Single product turned fully customisable per client
Efalia Engage, formerly Fluicity, is a citizen participation and community consultation platform. Over seven years I worked across its entire surface: the product, the architecture, the AI features, and the infrastructure it runs on.
Migrating without a rewrite
The application started as a Rails-rendered monolith. Moving it to a Rails API with a React frontend was necessary for performance and scalability, but a stop-the-world rewrite was not an option for a product in active use.
I ran the migration gradually, moving surfaces across a piece at a time, with both rendering models coexisting until the last one was done. The platform kept shipping throughout.
From product to platform
The largest arc of the work was turning one product into a fully customisable SaaS. Clients could shape their own instance: theming, pages, custom domains, custom fields, custom forms, and custom logic. Configuration, rather than a fork per client.
Supporting that meant building the machinery underneath it:
- An in-house form builder, comparable to Google Forms, with integrated field types, custom validation, conditional visibility and jump logic.
- Fully customisable email features: newsletters and communications, including reply-to handling.
- Typeform API integration, so admins could manage their external forms from the app’s own dashboard instead of switching tools.
- CSV and XLSX import, letting clients bring offline contributions and votes into the platform.
Search, feeds and trust
Discovery ran on Algolia, giving fast search alongside customisable feeds and recommendations.
Participation platforms also have to be trustworthy, which is a harder problem than it sounds. I implemented fraud detection and deduplication for contributions and votes, and an identity and residency validation process using PreventGo. Consultations are only meaningful when the people in them are who they say they are, and live where they say they do.
Pioneering the AI transformation
I proposed and then implemented the platform’s first AI-powered features, built on OpenAI:
- Content moderation across user-submitted contributions
- Summarization of large volumes of citizen input
- A report builder that turns consultation data into readable output
Infrastructure and observability
I helped migrate the infrastructure from Heroku to Qovery on AWS, and managed the AWS footprint directly (EC2, S3 and Lambda) with Dockerized CI/CD pipelines.
For visibility, I ran Appsignal for continuous monitoring and error reporting with Slack integrations, and stood up Redash as an internal service for graphs and data visualisation, so questions about the data did not have to become engineering tickets.
Throughout
End-to-end solutions in Ruby on Rails, React and modern TypeScript, across the full depth of a product, sustained over seven years.
Stack
- Ruby on Rails
- React
- TypeScript
- PostgreSQL
- Algolia
- OpenAI
- AWS
- Qovery
- Docker
- Redash
- Appsignal