Michael Osarodion
Full-stack and DevOps consultant. I take your idea from the first conversation to secure live software.
I own the whole journey: discovery, architecture, build, testing, cloud deployment, monitoring and the upgrades after launch. One person, no handoffs, nothing lost between teams.
Results I have delivered
- Built and deployed a live assistant that answers from a team’s own documents with the exact quote behind every claim, where one measured change made answers more accurate and 40 percent cheaper.
- Cut AI invoice reading from over 90 seconds to under 25, hosted at about 13 dollars a month for 100,000 invoices, with automatic failover between AI providers.
- Built a multi-tenant building safety platform where documents are read into fields and a person confirms every value.
- Cut reporting errors by 90 percent for fire engineers with a platform that turns site forms into finished Word reports.
- Moved a 400+ file Django core library from Python 2 to Python 3 with about 1,500 tests kept passing, and ran it on AWS EKS.
- Rebuilt a client’s bulky, slow-booting desktop image into lean images up to Nvidia GPU desktops, patched in one place, and built their security logging with Fluentd.
- Built reusable Stencil web components for a financial advisors’ Angular platform.
- Ran production services on AWS across EKS, ECS and serverless (API Gateway, Lambda, SQS, EventBridge), locked down so each part could reach only what it needed (least-privilege IAM), with images scanned for security problems before release.
- Built and deployed a TypeScript task board for teams, where every change reaches everyone else’s screen straight away, with 403 tests passing against a real database.
- Delivered inside a central government platform team, where every change had to be easy to audit.
What I bring to your team
Back end: Python, Django, FastAPI, Flask, Celery, Node.js, PostgreSQL, Redis, RabbitMQ.
Front end: React, Next.js, Angular, PrimeNG, TypeScript, web components.
Cloud and DevOps: AWS (EKS, ECS, Lambda, API Gateway, SQS, EventBridge, S3, IAM), Docker, Kubernetes, Terraform, GitHub Actions, GitLab CI.
Observability: Prometheus, Grafana, Datadog, Fluentd.
Data and AI: Snowflake, dbt, Kafka, Airflow, large language models with a person checking the output.
I have led the weekly review with a client’s security team; I mentor developers, write the diagrams and runbooks teams keep using, and explain every option with its cost in plain words.
AWS Certified, Certified Kubernetes Application Developer, SnowPro Core. MSc Software Engineering.
Looking for: fixed-scope builds, contracts and senior or lead roles, remote worldwide. Send me what is slowing you down and when you need it fixed.
Skills
Experience Level
Language
Work Experience
Education
Qualifications
Industry Experience
The problem: A client in building safety had engineers reading survey reports, fire risk assessments and test certificates by hand, then writing up each building’s safety status. Hours per building, and two engineers reading the same documents did not always reach the same answer.
What it does now: Documents are read automatically. Every extracted value carries a quote from the source page. Anything the system is not confident about is flagged for human review before it counts. Status is then calculated from rules the client controls, so the same documents always produce the same answer.
Stack: Django REST Framework, PostgreSQL, Celery with Redis, Next.js and React, on Linux with nginx and systemd.
The AI extracts. It never decides. The model pulls values out of documents and does nothing else. Status comes from rules running over those values, so it is reproducible and traceable. If a building is later found unsafe, somebody has to explain how the assessment was reached, and “the model said so” does not survive scrutiny. Every value stores its source page and quoted line, so a user can click any figure and land on the exact text behind it.
Confidence is a band, not a number. High, Medium or Low. Low is treated as no answer at all, and the field is recorded as not found, because an empty field gets chased and a plausible wrong value gets believed.
Rules are data, not code. The logic deciding a building’s status lives in database rows read by one evaluator. The client changes a threshold, and it applies on the next read, turning a two-week change request into a five-minute edit. A rule in a table has no compiler checking it, so every rule carries a test asserting its outcome for known inputs. Backend tests run under pytest, frontend units under Vitest, both in Docker.
Absence has more than one meaning. A document never supplied is a different problem from one that expired, and both differ from one with no review scheduled. Collapsing them into a single “not compliant” flag is simple to build and useless to act on. Each state is modelled separately, and one place decides whether a state counts as covered, so no two screens disagree.
Slow calls do not block the job. Extraction runs as a Celery task, so an upload returns immediately and results appear as each document finishes. When the model is unavailable, uploads still succeed and documents queue.
Result: Assessments that took hours take minutes, and two people reading the same building get the same answer. Every figure traces back to a page in a source document, so the output holds up under audit. Several client organizations share one deployment, each seeing only their own buildings.
A production-ready full-stack social networking platform built specifically for developers. Users can create detailed professional profiles with work history, education, skills, and social links, connect their GitHub account to surface live repository data, write and interact with posts, and leave comments, all within a clean, responsive interface.
Authentication is stateless and secure using JWT and Passport.js. The React frontend uses Context API and useReducer for clean global state management across authentication, profiles, posts, and GitHub integration. The Express.js and Node.js backend handles input validation, error management, and MongoDB data operations through a well-structured RESTful API layer.
Technologies: MongoDB, Express.js, React.js, Node.js, JWT, Passport.js, Mongoose, Axios, React Router, Context API, Bootstrap, Styled Components, bcryptjs, Validator.js, GitHub API, ES6+ JavaScript, HTML, CSS
A full-stack compliance platform built for a fire safety engineering consultancy to replace a slow, error-prone, manual reporting process. Engineers were spending hours compiling compliance documents from scratch, with every surveyor using their own template, resulting in inconsistent output and preventable mistakes. The platform automates that entire workflow.
The system generates formatted, regulation-ready Word documents automatically from structured form data, supports configurable document sections per document type, and routes everything through a structured review and approval workflow. Role-based access control gives Admins, Reviewers, and standard Users precisely the permissions they need and nothing more. A real-time reporting dashboard built on complex PostgreSQL queries gives the team visibility into document status, pending approvals, and compliance metrics at a glance.
Celery and RabbitMQ handle document generation and email notifications asynchronously, keeping the interface fully responsive under load. The platform is deployed on Linux with Nginx, Gunicorn, Docker, and full CI/CD automation via Terraform and GitHub Actions, including automated testing, security scanning, and SSL/TLS configuration.
Technologies: Python, Django, Django REST Framework, Celery, RabbitMQ, PostgreSQL, python-docx, Docker, Terraform, GitHub Actions, Nginx, Gunicorn, JWT Authentication, 2FA, Bootstrap, Linux, HTML, CSS, JavaScript, React.js, AWS
A production middleware API that removes manual invoice data entry, turning PDFs, photographs, and scans into structured data without requiring a template set up in advance for any supplier. It was built after a national tax reform set a strict format that business invoices now have to follow, so the output had to be exact and the deadline was non-negotiable.
Reading combines two approaches. Fast pattern matching handles predictable fields like dates and totals, and a vision-language model handles the parts that need understanding, such as who the parties are and how line items and tax structures hang together. Processing time came down from over 90 seconds per invoice to under 25. On the self-hosted path, a separate round of tuning took a three-minute average down to seconds by fixing model call settings that were left at their defaults, a worker configured to run more jobs in parallel than the model was set up to handle, an oversized context window, and a missing timeout that let a slow response hang indefinitely.
Everything read is checked three times before it goes anywhere: the fields that must be present, whether the arithmetic on the invoice is internally consistent, and how confident the reading was. Anything doubtful stops for a person rather than being passed to a downstream system. The thresholds that decide what counts as doubtful are configuration rather than values buried in code, because the rules behind them change.
Other services consume it through an API key system with environment prefixes for live, test and development keys, so a key cannot be used in the wrong environment by accident. Keys are stored hashed, they expire, and the service accepts either a key or an authenticated session. That area alone carries eleven test files.
Because the documents contain business and personal data, the AI provider is contractually held to retain none of it; the provider is pinned to one that will commit to that, and every call records whether it held. A written assessment tracks the technical controls in place against the legal and user-facing work still outstanding under the applicable data protection act.
The hosting decision was made on measured numbers rather than assumptions, with a written comparison of paying per use against renting graphics hardware based on actual usage, landing at roughly 13 dollars a month for 100,000 invoices. Automatic failover between AI providers keeps the service running when one of them does not. Bulk uploads run through a queue, so a large batch never holds up the invoice somebody is waiting on.
Architecture is documented as context, container and component diagrams, with a sequence diagram and a validation flowchart. There is a browser interface alongside the API.
Technologies: Python, Django REST Framework, Celery, RabbitMQ, PostgreSQL, Redis, React, JavaScript, HTML, CSS, Docker, Terraform, GitHub Actions, AWS Bedrock, OpenRouter, Ollama, Swagger and OpenAPI, Pydantic, Nginx, Linux
Hire Michael Osarodion today
To get started post up your job and then invite Michael Osarodion to your job.