Skip to content
Alex ALAVO.

Case study 06 · SaaS · AI

1:1 Digital

Prepares manager–employee one-on-ones with AI and turns notes into a report signed off by both.

Role
Full-stack development, integrations and AI orchestration
Category
SaaS · AI
Stack
Laravel 13 · React 19 · Claude API
Quality
53 tests
Preparing a session: previous commitments and dictated notes
Manager dashboard

01 — Context

Weekly manager–employee meetings required finding previous commitments, checking goal progress and writing up decisions, with information spread across an OKR tool, notes and emails.

02 — Problem

Goals in one tool, notes elsewhere, emails on the side: one week's commitments got lost the next.

03 — Solution

The manager sets up a follow-up cycle and selects Perdoo goals. The app creates the sessions, carries over previous commitments and drafts an agenda with Claude. Notes are typed or dictated, the AI produces a structured report that is reviewed and signed off by both manager and employee; the double sign-off triggers sending.

04 — Features

  • Cycles and sessions

    Weekly sessions generated, with no overlapping cycles.

  • Perdoo goals

    Progress and key results, stale goals flagged.

  • AI preparation

    Questions and topics proposed from OKRs and commitments.

  • Dictation

    Native speech recognition, in-browser Whisper as a fallback.

  • Report

    Commitments, goals, blockers and decisions, editable before sending.

  • Sign-off and history

    Timestamped sign-offs, SHA-256 fingerprint and locked content.

06 — Architecture

  1. React interfacedictation · Whisper
  2. Laravel · Inertiaactions · authorisation
  3. Jobs and schedulerprogressive retries
  4. Perdoo · ClaudeOKRs · agendas · reports
  5. Relational databasesessions · snapshots

Dedicated services isolate calls to Perdoo and Claude; long-running work is handed to jobs.

Claude is called with an enforced tool and JSON schema, so it returns data the interface can use rather than free text.

07 — Technical challenges

  • Challenge

    Match Perdoo data with internal tracking.

    Solution

    Dedicated GraphQL queries, typed objects and snapshots attached to each session.

  • Challenge

    Get usable results from the AI.

    Solution

    An enforced Claude tool with a JSON schema, separating assumptions, suggestions and confirmed facts.

  • Challenge

    Coordinate long-running work and final sign-off.

    Solution

    Jobs, interface refresh, status-based checks and a fingerprint of the final content.

08 — My contribution

  • Architecture and data model
  • Laravel backend and React / TypeScript interfaces
  • Perdoo, Claude, Google OAuth and email integration
  • Background processing and voice input
  • Access rules, tests and continuous integration

09 — Stack

Backend
PHP 8.3, Laravel 13, Socialite, Laravel Mail
Frontend
React 19, TypeScript, Inertia.js, Tailwind CSS 4, shadcn/ui
AI and voice
API Claude, Whisper (Transformers.js), Web Speech API
Integrations
Perdoo GraphQL, Google OAuth 2.0, Brevo
Quality
PHPUnit, GitHub Actions

10 — Results

  • 53

    passing tests and 159 assertions

  • 2

    timestamped sign-offs before each report is sent

Next case studyMesSousA mobile money coach to track spending in CFA francs, plan a budget and decide before buying.