Software Engineering
We build the software a business runs on: websites.
Websites and web apps. Software that takes over slow, repetitive work. AI tools that do a real job instead of a demo.
Is this you?
If any of these sound familiar, it's costing you.
Every system on this page exists because a real version of one of these problems showed up first.
Manual work eating your week
Someone still copies data by hand, work a script could do unattended.
Slow, clunky software
Fine with one user, buckles the moment real traffic arrives.
No tests, no confidence
Every release is a gamble, because nothing checks it first.
Data you can't trust
A crash or a power blip can quietly corrupt the data you run on.
A fragile MVP you outgrew
It shipped fast to prove the idea. Now every new feature breaks an old one.
AI features you can't audit
Your AI does something and nobody can explain why.
Our Approach
How we work.
The same four steps on every job, from the first call to launch, so you always know what is being built and what state it is in.
Understand the Problem
We start with what you actually need, what you cannot change, and what success would look like. Not every project is solved the same way, and assumptions are the enemy of good software.
Plan & Design
Design first. We map out how the pieces fit, how the data is stored, and how the pieces talk to each other, before writing the real code. A problem caught on paper is cheap. The same problem caught after launch is not.
Implement with Tests
We write the checks before the code. Every feature gets automatic tests: on each small piece, on the pieces working together, and on the whole thing as a person would actually use it. Tests are documentation that never lies.
Verify & Deploy
Before it goes live we push it under heavy traffic, review it for security holes, and run it on a copy of the real setup. Going live is one command, and so is undoing it. No surprises on launch day.
Start with three
Three projects worth your time.
If you read three things here, read these. Two production systems, seven core systems, four full applications, and twenty-five more.

Agency Blog SaaS
agency-blog-saas
Problem: An agency selling blog writing needs one place for clients to order it. Solution: The web app that runs our own agency: a client signs in, asks for a post, and the system writes, stores, and publishes it; the credits are refunded automatically if the writing fails. Results: Seven live clients on the agency's own servers; 132 of 132 tests pass. The code is private, so the linked demo is a scripted tour on made-up data.
How it works
LLM Inference Engine
inference-engine
Problem: A machine running an AI model sits idle between requests, so a queue of users crawls. Solution: Careful memory housekeeping, and serving eight requests at once instead of one at a time. Result: 2.8x more words per second on the same plain CPU, with no graphics card involved.
The speed gain
Raft Consensus KV Store
raft-kv
Problem: Keep a copy of your data on several machines so no crash loses it, and they can drift into two versions that both look right. Solution: An agreement protocol: the machines must vote before anything counts as written. Result: 5,000 randomly generated disasters, and the data never once contradicted itself.
Surviving crashesProduction work
Systems shipped and running live.
Real products serving real clients, running unattended on the agency's own infrastructure. The source stays private because it is the agency's live product, so the linked demos are walkthroughs built on fabricated data, and each page says so plainly.

Agency Blog SaaS
agency-blog-saas
Problem: An agency selling blog writing needs one place for clients to order it. Solution: The web app that runs our own agency: a client signs in, asks for a post, and the system writes, stores, and publishes it; the credits are refunded automatically if the writing fails. Results: Seven live clients on the agency's own servers; 132 of 132 tests pass. The code is private, so the linked demo is a scripted tour on made-up data.
How it works
Blog Posting Pipeline
blog-posting-pipeline
Problem: Small businesses want a steady stream of articles and nobody has time to write them. Solution: One program does the whole job: researches, plans, writes, makes the picture, publishes. It cannot invent a source or a link, only use pages it genuinely found. Results: Runs unattended on a rented server for several agency clients, at a typical $0.37 to $0.40 per post, billed exactly per run. The linked demo is a made-up walkthrough.
The live postsCore systems
The hard parts, built from scratch.
Each system solves a real constraint: responding to AI requests faster, keeping data safe through crashes, coordinating between computers, finding information instantly, running AI agents you can trust, and training language models from scratch. Six systems, each built solo from scratch and measured by tests and benchmarks you can re-run yourself. The seventh card, the C++ ray tracer, is team coursework and is badged as such.

Urdu Language Model
urdu-slm
Problem: AI text models are built for English. They chop Urdu into far more pieces than it needs, so every word costs more to read. Solution: One built from scratch on cleaned Urdu text, with a splitter taught to cut Urdu sensibly. Result: Reads the same Urdu in 5.23x fewer pieces than GPT-2. It writes fluent Urdu, but it is small and still gets facts wrong.
How it learned
LLM Inference Engine
inference-engine
Problem: A machine running an AI model sits idle between requests, so a queue of users crawls. Solution: Careful memory housekeeping, and serving eight requests at once instead of one at a time. Result: 2.8x more words per second on the same plain CPU, with no graphics card involved.
The speed gain
SQL Database Engine
sqlmill
Problem: If the power cuts out mid-write, the data must not come back scrambled, and several people must be able to write at once. Solution: A database built from scratch, with a safety journal written before every change. Result: Killed at random 300 times; all 300 times the data came back intact.
Surviving power cuts
Raft Consensus KV Store
raft-kv
Problem: Keep a copy of your data on several machines so no crash loses it, and they can drift into two versions that both look right. Solution: An agreement protocol: the machines must vote before anything counts as written. Result: 5,000 randomly generated disasters, and the data never once contradicted itself.
Surviving crashes
Agent Runtime
agent-runtime
Problem: AI agents are unpredictable. You can't audit what they did or test if they broke. Solution: Record every action so you can replay it exactly the same way. Result: Test changes, audit decisions, debug problems with perfect records.
Recording decisions
Vector Database Engine
vector-db
Problem: Searching a huge pile of text by meaning, not exact words, is slow if you check every item. Solution: A search index built from the original research paper, not from a ready-made library. Result: At least as accurate as FAISS, the library the industry uses, though FAISS answers each search 10 to 13x faster.
Search accuracy
C++ Ray Tracer Team
cpp-ray-tracer
Problem: Drawing a scene by following each ray of light means testing that ray against 1.29 million triangles. Solution: A three-person course project. Our founder, Salman Adnan, wrote the shading layer: how each surface catches light, dull, glossy, or mirror-like. Result: Film-style shadows and reflections on a crystal-cave scene.
The shading layerReal-world problems solved
Complete applications, front to back.
Real problems from real people. Traders needing regulations fast. Farmers and buyers finding each other. A poetry corpus nobody had digitized. Appointments booked over a real phone line. Each page says plainly what runs live and what is still ahead.

Trade Intelligence Copilot
trade-intelligence-copilot
Problem: Answering a question about Pakistan's sugar import records means digging through the records yourself. Solution: Ask in plain English; it looks the answer up and shows you the exact rows it used. Results: 15 of 15 database answers correct, and it refuses to answer rather than invent one when the records cannot support it. Its misses on the rest of the 28-question test are published too.
Answer accuracy
ZaraiLink Team
zarailink
Problem: A trader looking for suppliers of one commodity, from one country, under a price, has nowhere to ask. Solution: A directory you search in plain words, typos included, over Pakistani customs records. Results: Final-year project, led by our founder, Salman Adnan, 112 tests passing. The demo runs on 14 made-up companies, not live customs data.
The trade directory
Balochi Poet Classifier Team
balochi-poet-classifier
Problem: Balochi poetry exists, but almost no language technology has ever been built for it. Solution: Three students hand-checked 1,670 verses; our founder, Salman Adnan, built the part that cleans them and teaches a computer to tell three poets apart. Results: Every step runs end to end on the real verses, but the full training needs a faster machine than he had, so no success rate is claimed.
The poetry dataset
Voice Appointment Agent
voice-agent
Problem: Somebody has to pick up the phone to book, move, or cancel an appointment. Solution: A phone line that answers itself, asks for whatever detail is missing, and never gives away a slot that is taken. Results: 25 of 25 scripted calls pass, and one real booking was driven over the open internet into a real calendar entry. The live phone number was never used, so no human voice has tested it yet.
The booking flowAlso built
Twenty-five more, same standards.

Task Manager
A shared to-do list in the browser: hand a task to a colleague and they see it appear instantly, with no page refresh. Built during an internship.
The sharing bug
Prompt Evolution GA
Breeds better wording for AI coding instructions across generations, scored not by opinion but by actually running the code each one writes. A course project.
Hand-written still won
Postgres Scaling Lab
How far an ordinary database goes before you replace it: add an index, split a table by date, copy it to a second machine. Course work; the numbers come from the original course runs.
70% slower
WebGL Terrain Explorer
Fly over a 3D landscape in the browser. Nothing is a downloaded model: the hills, the sky, and the rippling water are worked out by the code. A university graphics course project, deliberately with no ready-made 3D toolkit.
No libraries
ReelFlow Studio
A client's video publishing was fully automated with no screen a person could use. This is that screen: one button per decision, approve, caption, publish. The demo runs on a made-up queue, not the client's live system.
Handling failures
University Enrollment System Team
The app a student uses to add, drop, and swap courses, with clashes and full sections blocked and the timetable exported to Excel. Coursework: the accounts are invented and passwords sit in the database as plain readable text.
Clashes get blocked
Hi-Tec Shopify Automation
A client's stock counts and costs lived in one spreadsheet and its shop's product list in another, so matching them took hours. Three tools do it instead. A person reviews the result; the tools never touch the live store.
Matching two spreadsheets
Codeforces Mashup Generator
Builds a practice contest from a programming-puzzle site, keeping only puzzles that nobody in the study group has already solved, so nothing is spoiled.
Only unsolved problems
Paws Rescue Donations
A private site for an animal rescue to log who donated what, and for which pet, replacing the shared spreadsheet anyone with the link could edit.
Replaces the spreadsheet
N8N Automations
59 business chores, each built as a flowchart that then runs itself: scraping leads, chasing enquiries, sending invoices. Documented honestly, faults included; live account keys found in the files were stripped.
One stage wired
Space Race Analysis
An interactive dashboard analyzing every recorded space launch, from the Cold War rivalry to the present.
Cold War launches
Police Shootings Analysis
2,535 records of people killed by police in the United States, set beside US Census figures on poverty, schooling, income, and race, in charts you can filter by state, year, or type of case.
Five Census datasets
Earnings Regression
Does more schooling, or more experience, mean a higher wage? Move two sliders and it predicts one. The honest answer: those two facts barely predict anything at all.
It fails honestly
Flask TODO List
A to-do list in the browser: everyone signs in and sees only their own tasks, ticking them off without the page reloading.
Passwords now scrambled
Flask Online Shop
A demo storefront: sign-up, login, and checkout through Stripe in practice mode, so no real money moves. Two real bugs turned up, including one that let anybody into anybody else's account.
The login bug
PDF to Audiobook
Turns a PDF, a report or a book chapter, into an mp3 you can listen to on a walk. It needs the internet: the voice comes from Google's speech service, not from your own machine.
One page crashed
Color Palette Generator
Drop in a picture and it shows the ten colors that cover most of it, with the exact code for each so you can paste it into a design. Nothing is sent anywhere and nothing is stored.
What broke it
Web Element Inspector
Point and click instead of writing a program: type a web address, pick what to look for, and it drives a real Chrome browser to find every match and outline it. A live scrape against a real site is not demonstrated; the machine it was checked on had no internet.
Point and click
Morse Code Converter
Converts ordinary writing into Morse code and back, live as you type, and flashes the dots and dashes on screen so you can see the rhythm.
The missing V
Tic Tac Toe
Two players, a 3x3 grid, and the program spots the win, highlights the line, and keeps score. A small learning exercise.
The win-check bug
Image Watermarking Tool
Stamps a logo onto a whole batch of photos at once: size it, fade it, drop it in one of nine spots, preview it, then one click does every photo, leaving the originals untouched.
The stamp bug
Typing Master
Retype a block of text against the clock. Each letter turns green when it is right and red when it is wrong, so you see the mistake as it happens, and it charts your last ten attempts. A small learning exercise.
See your mistakes
Breakout
The arcade game: slide the paddle, bounce the ball, knock out the wall of blocks. Built from scratch with no game engine, so the lives, the speed-up, and spotting a hit are all hand-made.
Cutting corners
Disappearing Text
Type, and if you stop the words fade until the box wipes itself clean. A ring above drains like an egg timer, so you can see the deadline coming.
The invisible timer
Dino Game Bot
Plays Chrome's offline dinosaur game by watching pixels on the screen, never peeking inside the game. It was never run against the real game here, and the patch of screen it watches fits one setup only.
One screen onlySee it running
Grab it, turn it, see how it actually works.
Not a video, not a diagram. This is a live 3D model of one of the systems on this site, running in your browser right now. Take hold of it and turn it. Then load a different system into it and turn that one too.
Recognition
Notable achievements.
Measured results from real work. No vanity metrics, only outcomes that matter.
across 14 systems
production software
zero data loss
Value Delivered
What you'll get.
Every project ships with more than just code. You get systems that are tested, documented, deployable, and maintainable.
Working Code
Code written for the next person to read, not to show off. It follows the ordinary conventions of its language, so any competent developer can pick it up. Boring and maintainable beats clever.
Full Test Suite
Automatic checks at every level: on each small piece, on the pieces working together, and on the whole thing as a person would use it. The paths that matter most are covered heaviest, and the tests double as documentation: read them and you know what the system does.
Documentation
A plain-English guide, diagrams of how the pieces fit, a reference for anything another program plugs into, and step-by-step instructions for putting it live. Enough to understand, maintain, or extend it without having to ask us.
Deploy Ready
One command puts it live: the build and release steps run themselves, the app is packaged so it behaves the same on any machine, and there is a written way to undo the release if something goes wrong.
Security Verified
A security review before launch: everything a user types is checked before it is trusted, passwords and keys are kept out of the code, and sign-in and permissions are enforced on the server. Reviewed against the OWASP Top Ten, the industry's standard list of the most common web weaknesses.
Performance Audited
We push the system under heavy traffic until something gives, fix what gave, and hand you the number: how many people it can serve at once, and what breaks first when it cannot.
Questions?
Frequently asked questions.
What languages and frameworks do you use?
Python (Django, PyTorch), JavaScript and React, SQL, and C++. We pick the tool that fits the job instead of forcing one everywhere: Python and PostgreSQL for the machinery behind the scenes, React for what you see in the browser, C++ when raw speed decides the outcome.
How long do projects typically take?
Depends entirely on how big it is. A single feature: 1 to 2 weeks. A complete application, browser through to database: 4 to 12 weeks. A system built from the ground up: 8 weeks or more. We give honest estimates upfront, with clear milestones, so you know what to expect at every step.
Do you do revisions and changes?
Yes. We budget time for feedback and rework. Reasonable changes to what we agreed are covered. If the job grows, we talk about it openly: when what you need changes significantly, the timeline and the budget change with it, and only with your agreement.
What about maintenance and updates?
Every system we ship is production-ready and documented. We're available for bug fixes and minor updates. For ongoing maintenance or new features post-launch, we can discuss retainer arrangements or per-request pricing.
How do you handle security?
Security is built in from day one, not bolted on later. Everything a user types is checked before it is trusted. Data is scrambled both while it sits on disk and while it travels. Sign-in and permissions are enforced on the server, not just hidden in the interface. Every system gets a security review against the OWASP Top Ten, the industry's standard list of the ten most common web weaknesses, before it goes live.
What's your communication style?
Clear and frequent. Weekly status updates minimum. You'll always know what's being built, what's blocked, and what comes next. No surprises, no jargon unless you ask for technical depth.
Contact
Have a system that needs building?
We take on AI work and the systems underneath it, and we are happy to talk a hard problem through before you commit to anything.
Book a call
Let's talk about what you're building.
Pick a slot below. No forms, no back-and-forth emails.