Product and UX at 22seven
Almost seven years on Old Mutual's personal finance app, a pioneer in South Africa: React and React Native, design sprints, user testing, and behavioural data that decided what got built next.
I'm Dean Norman, a senior engineer in Cape Town with 15+ years building software people depend on at work.
The rule I work by is simple.
Most recently I built Tenderly, an AI tool my team now works from to pick which government tenders are worth bidding on. See Tenderly
Find the real decision inside a messy workflow, then make it easier to understand, run and trust.
Almost seven years on Old Mutual's personal finance app, a pioneer in South Africa: React and React Native, design sprints, user testing, and behavioural data that decided what got built next.
Silicon Overdrive, Whitehart and Kepler: running client projects and teams, mentoring developers, then making releases trustworthy with end-to-end test automation.
“I joined Zamatrack to build one app. Over the following year I took on the dashboard's architecture, testing and release process, moved onto the backend, and drove the move to one route to production. I didn't arrive with that scope. I earned it one screen, one release and one decision at a time.”
Selected work
Described at category level, because some of it is commercially sensitive. Screens show synthetic demo data; the rest are illustrations.
Radios, cameras, vehicles and alarm hardware spread across client sites lived in spreadsheets nobody could answer questions from. Now there is a register of what the company owns, where each item is, who is responsible for it and what condition it is in. Reported faults become the same kind of job operations teams already handle, site audits lock once a manager signs, and finance sees a current value with the method behind every figure.
Shipped as five sequenced phases across the dashboard and backend, adding three product areas. My largest delivery here.
People are starting to shop through AI assistants. The store needed to be usable by one without handing it the buyer's money. Payment and the final decision stay with the person.
Tested end to end: an AI agent given only the task built a priced order and returned the link.
Made a risky multi-tenant PHP backend safe to release: a release lane that shipped one change at a time with a dry run and a backup, then one route for the whole team, where a merge to main is the only way a change reaches production.
Moved the dashboard onto Cloudflare with builds straight from Git, wrote the firewall rule so web traffic reaches the servers only through Cloudflare, and put mail backups on locked storage with a tested restore.
Identity and compliance checks: ID verification, sanctions and PEP screening, and bank and company checks, with bundled KYC checks gated behind a lawful-basis step.
The resident app for gated estates, built for bad connections. Its access feature is built and proven on production behind a per-company switch.
After hours
For me first, and for anyone they help. Same habits as the day job: a clear problem, privacy by default, and a person in charge.
Keep the songs Autoplay finds for you.
When an album or playlist ends, Spotify's Autoplay keeps going. The best songs of the evening are ones you never chose, and by tomorrow they're gone. A Go app hears the Spotify desktop client through native macOS notifications, works out when Autoplay has taken over, waits for 30 seconds of real listening, then saves the track to a private playlist.
A terminal cockpit shows the live capture pipeline, a Review Deck for approving tracks one card at a time with undo, session stats, cover art and a full-screen Zen mode tinted from the album cover. Spotify never says “this is Autoplay”, so it's inferred, and the README says so plainly.
About 100 commits since May, with tests on the detection logic and CI.
A browser extension that restores copy, cut and paste on sites that block them. Off by default and switched on per site, with no clipboard reads, no network calls and no telemetry.
A free Android app, made in Cape Town, that keeps grounding tools, DBT skills, South African helplines and Western Cape NA meetings together on a phone. No account, and it works offline.
Our map dashboard hit a crash when stopping a popup's auto-pan removed the popup. I root-caused it upstream, added a regression test, and the fix was merged into Leaflet for its 2.0 release. Smaller docs fixes merged in WXT and BullMQ.
A native macOS app for converting video, audio and images locally, with the generated commands visible and originals never overwritten.
“Output that passes a schema can still be wrong, so it's checked before anything downstream relies on it.”
Tenderly's models were chosen by a blind test against decisions I had made myself, with the pass mark agreed before the run so I couldn't tune to the answer. Every disagreement traced back to the hand-written profile of what we sell, not to the model.
Quotes are checked against the source and coverage is counted in code. That caught a length limit silently cutting long tenders short.
I use Claude Code daily inside ticketed, reviewed work with written decision records, and I built the AI skills my team uses.
Identity and compliance checks sit behind a lawful-basis step. Model output reaches nobody unchecked. Nothing learns from past decisions until a replay proves it helps.
One line per role. The CV has the rest.
Primary author of Worxit's operations dashboard, resident app and tender tools; since August 2026 the main engineer on its PHP backend.
End-to-end Playwright suites and automated regression packs.
Led delivery across web projects with a team of developers.
Led software delivery across client projects, Scrum Master, mentored junior developers.
Product engineering, design sprints, user testing and SQL analytics on a personal finance app.
Agency web development at Urbian, freelance web design, BA in Creative Brand Communications at Vega.
A short email is the best start. Tell me what you're working on and I'll tell you honestly whether I'm the right person for it. I'm happy to walk through the architecture and decisions behind any of this work.
I also help a small number of businesses adopt AI where it earns its place, using the same method. If that's you, email me too.