AI-Powered SaaS · Multi-API Integration

Quadri AI —
four tools,
one platform.

A production-grade AI web application that wraps Google Gemini 2.0 Flash and AssemblyAI into four distinct workplace tools document Q&A, knowledge analysis, meeting transcription, and feedback intelligence. Built solo in PHP with a custom session layer, multi-format file handling, and a full survey engine.

Role
Sole Developer & Architect
AI APIs
Gemini 2.0 Flash · AssemblyAI
Core Tools
4 AI-powered modules
Stack
PHP · MySQL · JavaScript
File Support
PDF · DOCX · TXT · MP3 · WAV · CSV
Live Site
Quadri Ai ↗

4
Distinct AI-powered tools in a single unified platform
2
External AI APIs integrated Gemini 2.0 Flash & AssemblyAI
8+
Database tables covering users, results, surveys, and files
10+
File formats supported across documents and audio inputs

What I Built

Four tools. Two AI APIs.
One codebase.

01 —
Policy Assistant
Upload a policy document (DOCX or TXT) and ask natural language questions about it. The document text is extracted server-side, combined with the user's question and optional custom context instructions, then sent to Gemini 2.0 Flash for a precise, low-temperature answer. Results are persisted to the database and shown in a 5-item history panel.
Gemini 2.0 Flash DOCX Parsing ZipArchive Temp: 0.3
02 —
Knowledge Hub
Upload multiple documents simultaneously for combined AI analysis. The system concatenates extracted text across all files and sends them to Gemini with either a default analysis prompt (executive summary, key insights, topics, statistics) or a user-supplied custom prompt. Results stored per user with document name tracking and deletion capability.
Gemini 2.0 Flash Multi-file Upload Session Storage 2048 tokens
03 —
Meeting Companion
Two input modes: paste raw meeting notes for instant Gemini analysis, or upload an audio file (MP3, WAV, M4A, MP4, WEBM, OGG up to 200MB) for full transcription via AssemblyAI with speaker label detection and auto-highlights before Gemini structures the output into meeting minutes, action items, key decisions, and next steps.
AssemblyAI Gemini 2.0 Flash Speaker Labels 200MB Audio
04 —
Feedback Mirror
A full survey builder and analysis engine. Users create surveys with four question types (text, rating, multiple-choice, yes/no), generate shareable public links via unique tokens, collect responses without requiring respondent login, then run AI analysis across all collected data producing sentiment breakdowns, trend analysis, and actionable insights. Also accepts CSV/XLSX upload for external feedback data.
Survey Builder Public Share Tokens CSV/XLSX Upload Sentiment Analysis

Architecture

How the two AI APIs
work together.

Gemini handles all text-based intelligence. AssemblyAI handles audio-to-text transcription, and hands off to Gemini for structure and analysis. Every workflow persists results to MySQL.

  Quadri AI - Dual API Architecture
User Upload
DOCX · TXT · PDF · CSV
PHP Text Extractor
ZipArchive · file_get_contents
Gemini 2.0 Flash
Q&A · Analysis · Meeting minutes
MySQL
Persisted per user
── audio files take a different path ──
Audio Upload
MP3 · WAV · M4A · WEBM
AssemblyAI
Transcription + speaker labels
Polling Loop
5s interval · 500 max attempts
Gemini 2.0 Flash
Structure transcript into minutes
── surveys run on their own independent path ──
Survey Creator
Authenticated user
Share Token Gen
Unique public link per survey
Respondents
No login required · survey.php
Gemini Analysis
Sentiment · trends · insights
🤖
Google Gemini 2.0 Flash
All text AI - Q&A, analysis, meeting structure, feedback sentiment
🎙️
AssemblyAI
Audio transcription with speaker detection and auto-highlights
🐘
PHP 7.4+
Backend logic, file handling, API orchestration, session management
🗄️
MySQL / MySQLi
8+ tables — users, results per tool, surveys, responses, files
📧
PHPMailer / Gmail SMTP
Welcome emails on registration, login notification with IP/timestamp
🔐
Custom SessionManager
HTTPOnly cookies, strict mode, session ID regeneration every 30 min

Database Schema

8 tables, cleanly
separated by concern.

users
idPK
emailVARCHAR · UNIQUE
passwordVARCHAR · bcrypt
firstname / lastnameVARCHAR
numberVARCHAR
created_atTIMESTAMP
policy_results
idPK
user_idINT · FK → users
questionTEXT
answerTEXT
document_nameVARCHAR
created_atTIMESTAMP
meeting_results
idPK
user_idINT · FK
meeting_typeVARCHAR (notes/audio)
file_namesVARCHAR
resultLONGTEXT
created_atTIMESTAMP
surveys
idPK · uniqid
user_idINT · FK
question_typeVARCHAR
questionsJSON
share_tokenVARCHAR · UNIQUE
statusENUM active/closed
survey_responses
idPK
survey_idVARCHAR · FK
respondent_nameVARCHAR · optional
respondent_emailVARCHAR · optional
responsesJSON
submitted_atTIMESTAMP
feedback_files
idPK
user_idINT · FK
filenameVARCHAR
filepathVARCHAR
filesizeINT
uploaded_atTIMESTAMP

Engineering Challenges

Hard problems I solved.

Area
Async Transcription
The Problem
AssemblyAI transcription is not instant — large audio files can take 5–10 minutes. A naive implementation would time out the PHP process or leave the user staring at a blank screen.
My Solution
Built a polling loop in PHP — getTranscription() calls the status endpoint every 5 seconds, with a hard cap of 500 attempts (~41 minutes). Status is checked before each poll and the loop exits cleanly on completion or error.
Area
Multi-format Files
The Problem
DOCX files are ZIP archives, not plain text. A plain file_get_contents() call returns binary noise. TXT, CSV, and audio files each need completely different handling pipelines.
My Solution
Built format-specific extraction paths: ZipArchive to unpack DOCX and extract word/document.xml, file_get_contents() for TXT, parseCSVFile() for CSV with header detection, and binary passthrough to AssemblyAI for audio.
Area
Public Surveys
The Problem
Survey respondents should not need a login to submit — but the system needed to prevent unauthorized access to survey management and ensure responses are tied to the right survey without exposing internal IDs.
My Solution
Generated cryptographically unique share_token per survey, stored separately from the internal ID. survey.php is fully public but only reads via token lookup. Management endpoints verify session ownership before returning any data.
Area
Dual API Orchestration
The Problem
The Meeting Companion needs to call two completely different APIs in sequence — AssemblyAI first, wait for completion, then hand the transcript to Gemini — without the two concerns bleeding into each other.
My Solution
Separated the workflow into three clean functions: uploadToAssemblyAI(), requestTranscription(), and getTranscription(). The orchestrating function analyzeMeetingFiles() calls them in sequence and only passes to Gemini once transcription status is completed.
Area
Session Security
The Problem
Default PHP sessions are vulnerable to fixation attacks and can be stolen via JavaScript if cookies aren't hardened. Out-of-the-box PHP session config is not production-safe.
My Solution
Implemented a custom SessionManager class that enforces use_strict_mode, cookie_httponly, use_only_cookies, and regenerates the session ID every 30 minutes. Sessions stored in a dedicated sessions/ directory, not the default system temp.

Outcomes

What this platform delivers.

🧠
Multi-Model AI in One App
Gemini 2.0 Flash and AssemblyAI working in sequence — not in parallel — with clean handoff logic. Demonstrates the ability to design multi-step AI pipelines, not just single API calls.
📋
Full Survey Lifecycle
From creation to distribution to AI-powered analysis — the Feedback Mirror handles the entire feedback loop without requiring any external survey tool. Includes public token-based sharing and four question types.
📁
Broad File Handling
10+ file formats across documents and audio, each with a purpose-built extraction path. DOCX via ZipArchive, audio via AssemblyAI's upload endpoint, CSV with custom header parsing.

About the Developer

I build systems that
work in the real world.

I'm Kodilichukwu Okeke, a full-stack developer and CS graduate (Babcock University, 2026) based in Lagos, Nigeria. Quadri AI is one of three production systems I've built solo — alongside Elite Corporate Setup (pan-African compliance SaaS) and CampusXpress (multi-vendor campus marketplace published in IJSRA).

I specialise in building PHP backends that integrate real third-party APIs not toy demos. Every project I ship has real users, real data flowing through it, and real engineering decisions behind it.

I'm open to web developer and backend developer roles where I can bring this depth of experience to a product team. I move fast, think in systems, and take ownership end-to-end.

Languages
PHP Python JavaScript SQL HTML/CSS
AI & APIs
Gemini AI AssemblyAI Recombee Paystack
Backend & DB
MySQL PHPMailer Session Management File Handling
Tools
Git XAMPP / Linux Bootstrap jQuery
Let's work
together — seriously.
Lagos, Nigeria · Open to remote globally
Get in touch →