La Petite Ménagère
The need
Let customers book online, directly in the manager’s Google Calendar, without ever being offered a time that is already taken, and leave the decision with her: she confirms every appointment.
What we built
The website in six languages, the booking calendar, the server that connects it to the calendar, the emails to the customer and the manager, and automated deployment.
The flow
- The customer picks time slots
- Check: free, 2 h minimum, travel included (Rule)
- Appointment “to confirm” in Google Calendar (Integration)
- The manager confirms or declines from the email (Person)
- Confirmation to the customer, with a calendar file (Integration)
AI or rules?
Rules, no AI: nothing here requires interpreting text. 30-minute slots, visits of at least 2 hours, 30 minutes of travel between two customers. The grid on screen and the acceptance of a request apply the same rule: what looks free is what gets accepted.
Human oversight and risks
Each requested day is decided separately: confirmed for one or two people (with two, the calendar only blocks about half the time) or declined, and the time becomes free again. The customer gets the answer in their own language.
Checked automatically
- Ten customers request the same time at the same moment: only one gets it.
- If Google Calendar does not respond, nothing is half-saved and the manager is notified.
- What customers type is never interpreted as code in the emails.
- Booking flow and accessibility tested in a real browser.
- On every deployment, if the new version does not respond, the previous one comes back on its own.
- Tests run on the same database as production, PostgreSQL. Every change to its structure is versioned, tested, then applied automatically on deployment.
Built with
React, TypeScript, Tailwind CSS · Java 17, Spring Boot, PostgreSQL, Flyway · Testcontainers, Docker, Playwright · Google Calendar API · GitHub Actions, Caddy