9+ years building web products, 7+ years remote for Copenhagen-based product companies. I was the founding engineer of a GDPR-compliant multi-tenant Laravel SaaS used by Danish schools and a municipality, and I built a cybersecurity vendor's CRM, then moved it off WordPress onto Laravel to fix its performance. Today I build with AI coding tools every day and review every change before it ships.
AI coding tools every day; every change tested and reviewed by me.
End to end
The whole product
Data
Logic
UI
Tests
Deploy
Close to the people deciding
Straight from founders and product owners
Founder · Opinoma
Product owner · BullWall
claude — ~/app
~/app $ claude> Add retries with backoff to the webhook sync job and cover it with Pest … plan, edits and tests
● Reading app/Jobs/SyncWebhookPayload.php● Plan 1. Retry the API call 3× with exponential backoff 2. Log and fail the job after the last attempt 3. Pest tests for 200, 503 and timeout● Edited 2 files +48−6● php artisan test --filter=SyncWebhook✓ syncs payload on 200✓ retries on 503, then succeeds✓ fails the job after 3 timeoutsTests: 3 passedme Reviewed the diff → committed
Illustrative session: Claude writes, tests prove it, I review every change.
A GDPR-compliant platform for collecting and analysing evaluation feedback, used by Danish schools, vocational colleges and a municipality. I built and own the core engine: data model, business logic, UI, testing and deployment. The hardest part was making questions and questionnaires fully dynamic while keeping the data consistent enough to compare results over time.
It covers customizable questionnaires, benchmarking and real-time reporting dashboards. Heavy workloads run on Laravel queues, third-party API integrations handle failures and retries, and the multi-tenant codebase is covered by unit and feature tests in CI.
190+evaluations at a single school
3,000+student responses at that school
4competing suppliers beaten in a vendor comparison
Next layer · AIArchitecture designed
LLM report engine: 100K+ evaluations into written reports
The dashboards show the numbers; the next layer writes the story behind them. Schools generate a huge volume of free-text feedback in Danish and English, so I designed a pipeline that turns it into written reports per evaluation, teacher, school and comparison, self-hosted on open models so student data stays private.
01ResponsesDA / EN free text
02Token-aware chunkingfits each model's context
03Maplocal LLM summarises each chunk
04Reducetoken-aware merge of summaries
05JSON reportvalidated, stored per entity
RAG over fine-tuning, then dropped the vector store once semantic search turned out not to be needed.
Token budgets: capped output with max_tokens, prompt-level length targets, and retries on finish_reason.
Model choice: Gemma 3 27B, then Qwen3.5-35B-A3B (MoE, 4-bit) for speed on the same hardware.
BullWall protects 1,000+ organisations in 20+ countries. I took full responsibility for their CRM, working directly with the product owner. The original WordPress setup had become very slow, so I rebuilt it in Laravel with a new database and a Vue.js + TypeScript frontend.
Australia's long-running fire-protection provider, over 135 years in business. New WordPress site on Divi with custom hooks, actions and shortcodes, a WooCommerce shop, and CyberSource payment gateway integration.
Australian recruitment agency since 2001. Custom plugin for job listings and search, with a background cron task that keeps listings current by syncing from several job APIs.
Data and analytics firm for financial services. Custom WordPress theme for the main site, and a financial dashboard platform in Flask with Tableau, with roles and permissions tied to each user's membership.
WordPress
Custom theme
Python
Flask
Tableau JS API
PostgreSQL
WordPress admin plugin
IFMSA Egypt
Admin plugin for one of the world's largest student-run organisations. Five admin roles can accept, refuse, substitute or cancel registrants, send invitation letters, download passports and push notifications to the mobile app.
A medicine-ordering app for patients and the pharmacies that serve them. Patients find a medicine by name or by sending a photo of their prescription, and the request goes to the nearest pharmacy, located by GPS, for home delivery. A companion app lets pharmacies, including chains, receive orders and set the total cost and delivery fee.
Copenhagen, remote contract · worked directly with the founder
Architected and built the core engine of a GDPR-compliant evaluation SaaS: data model, business logic, UI, reporting, testing and deployment.
Made questions and questionnaires fully dynamic while keeping data consistent enough to compare results over time.
Delivered 5 survey products, including teaching evaluation, learning environment, MTU/APV and the national student well-being survey (ETU).
Built real-time reporting dashboards and benchmarking tools.
Multi-tenant architecture with role-based access and GDPR data security.
Heavy workloads on Laravel queues and jobs; third-party REST APIs with failure handling and retries; MySQL query and index optimization.
Unit and feature tests (PHPUnit, Pest) in CI/CD, deployed with Laravel Forge.
2019.02 2022.03
BullWall · Senior Software Engineer
Copenhagen, remote contract · worked with the product owner
Designed and built the company CRM from the ground up, from architecture to deployment.
Migrated it off WordPress and Gravity Forms to Laravel with a new database, fixing severe performance problems.
Leads, opportunities, customers and contacts, with charts and reporting.
Vue.js + TypeScript frontend, Google Maps API, and a Zoho integration.
User management, secure client data handling and client onboarding.
——
Freelance · WordPress & PHP Developer
Remote · Australian and international clients
Wormald: WordPress site on Divi with custom hooks, actions and shortcodes, a WooCommerce shop and CyberSource payments.
Genesis IT: custom job-listings plugin with search and a cron task syncing listings from several job APIs.
Custom plugins and themes, WooCommerce stores, and Stripe and PayPal integrations.
2018.02 2019.01
IT Wolf Solutions · Software Engineer
Alexandria · web and mobile projects for clients
Data Street Partners: custom WordPress theme, plus a Python/Flask platform with Tableau JavaScript API dashboards and membership-based roles.
IFMSA Egypt: admin plugin with five roles to accept, refuse, substitute or cancel registrants, send invitation letters, download passports and push notifications; event registration, scheduling and attendee management.
Saydality: Ionic app to search for medicine and get it delivered from the nearest pharmacy, integrated with a REST backend.
2017.04 2018.01
AIT Systems · Software Engineer
Alexandria · Laravel and WordPress client projects
Custom web apps and client sites in Laravel and WordPress: responsive layouts, database optimization and security fixes.
Thank you for taking the time to look through my work.
If something here fits what you are building, just message me where we are already talking and I will get back to you as soon as I can. I am always happy to walk you through any of these projects in more detail.