Work
OwnOwn product · Documents and media
Media-AI Processor

Media AI Processor

An app for working with documents and media using AI: transcribe, translate, summarize, clean audio and run OCR.

View live site

Screenshot of Media AI Processor (1/3)
Screenshot of Media AI Processor (2/3)
Screenshot of Media AI Processor (3/3)
SYSTEM.md

The problem

Handling documents and media means connecting specialized operations with controls people can understand.

What I built

A React interface that calls a FastAPI API with one router per module: audio, transcription, translation, OCR, summarization and documents. Models run inside the service and every job is tracked by status.

Outcome

A clear path from input to processing to download, with open models that do not depend on paid APIs.

Decisions that mattered

  1. 01

    One module per capability

    Each operation has its own router and service inside the API, so new ones are added without touching the rest.

  2. 02

    Jobs with status

    Long processes are polled by id and downloaded when done; Supabase stores their status.

  3. 03

    Open models

    Whisper, MarianMT, BART and EasyOCR, run without calling paid services.

Technologies

  • React
  • FastAPI
  • Whisper
  • EasyOCR
  • Supabase
  • Cloudinary

C4 model. The pulsing line is the main path of a request.

Level 1 · who uses the system and what it connects to

HTTPS1SQLHTTPSUserUploads filesMedia AI ProcessorDocuments and media with AISupabase[Supabase · PostgreSQL]Jobs and resultsCloudinary[Cloudinary]Processed files

Level 2 · the applications and data stores it is made of

Browser1REST ·jobs2SQLHTTPSUserUploads filesInterface[React · Vite · Vercel]Controls and downloadAPI[FastAPI · Docker]Orchestrates the modelsSupabase[Supabase · PostgreSQL]Jobs and resultsCloudinary[Cloudinary]Processed files

Level 3 · the components inside the API

/audio · /video ·/transcribe1/translate·/docs · /ocr ·/pdf-editorjob2jobjobSQL3filesHTTPSAPI routers[FastAPI routers]One router per moduleAudio and video[noisereduce · Whisper · FFmpeg]Cleans, transcribes andsubtitlesText[MarianMT · BART]Translates and summarizesDocuments[PyMuPDF · EasyOCR]PDF, DOCX and OCRJobs[jobs · polling]Queue and status of eachprocessStorage[storage]File input and outputSupabase[Supabase · PostgreSQL]Jobs and resultsCloudinary[Cloudinary]Processed files
  • Person
  • System
  • Container
  • Database
  • External
  • Main path
  1. 01File
  2. 02Interface
  3. 03API
  4. 04Module
  5. 05Job
  6. 06Download

CV

Get my CV

Leave your email and I will send the CV there. First I check the address is yours with a code.