Available for freelance work
Full-stack developer and AI engineer specialising in intelligent systems, health tech, and scalable web solutions. Based in Manchester, working with clients worldwide.
From machine learning pipelines to enterprise networks — a broad, battle-tested skillset built through real projects.
Real-world applications and systems — click any project to see the evidence and technical detail.
A cross-platform health and fitness app built in Flutter with a Node.js/PostgreSQL backend. Users earn XP, level up, complete daily habit quests, track nutrition and hydration, and compete on a global leaderboard — turning healthy habits into an RPG progression system.
Built as a cross-platform application — the same Flutter codebase runs on Android, iOS, and web. Backend deployed on Railway with a PostgreSQL database. Frontend web build hosted on Netlify.
Custom-built CNN and LLM pipeline trained on chest X-ray datasets to detect pneumonia with high accuracy. Implements advanced image preprocessing, data augmentation, and confidence-scored classification.
Built in Google Colab using TensorFlow. Contains the full model architecture, training pipeline, data preprocessing, and evaluation metrics. Open the notebook to explore the full model architecture, training pipeline, data preprocessing, and evaluation results across 7 ML models and 2 CNN architectures.
A custom variant of Go implemented from scratch in three fundamentally different paradigms: object-oriented Python, functional Haskell, and logic-based Prolog — identical in rules, radically different in design.
class GoGame:
def __init__(self, size):
self.board = [[None]*size for _ in range(size)]
self.bombs = {"Black": 2, "White": 2}
def use_bomb(self, row, col):
for dr in [-1,0,1]:
for dc in [-1,0,1]:
r, c = row+dr, col+dc
if 0 <= r < self.size and 0 <= c < self.size:
self.board[r][c] = NoneuseBomb :: GameState -> (Int,Int) -> GameState
useBomb gs (r,c) =
let affected = [(r+dr,c+dc) | dr <- [-1..1], dc <- [-1..1],
inBounds (gsSize gs) (r+dr,c+dc)]
newBoard = foldr clearCell (gsBoard gs) affected
in gs { gsBoard = newBoard }use_bomb(State, Coord, NewState) :-
State = state(Size, Board, Player, BB, WB, BC, WC, PC),
bomb_coords(Coord, Size, Affected),
clear_cells(Board, Affected, NewBoard),
NewState = state(Size, NewBoard, Player,
NewBB, NewWB, BC, WC, PC).Python mutates shared state directly. Haskell returns a transformed copy. Prolog defines the resulting state as a logical consequence of rules. Same problem — three entirely different ways of thinking about it.
Designed and configured a full enterprise network for a two-city consultancy — 4 offices, 40 workstations, dynamic IP allocation, inter-site routing, SSH security, and wireless capability.
Star topology per office, DHCP dynamic addressing (192.168.x.0/24 per subnet), RIP routing for inter-office traffic, SSH-secured router access, wireless access points in every room. Verified with 0% packet loss across all connection types.
Transparent, project-based pricing. Every engagement includes clear communication and clean, documented deliverables.
All prices are starting points — get in touch for a free quote.
Client feedback coming soon. Early-stage engagements available at reduced rates in exchange for a review.
Want your logo and review here? Start a conversation →
I'm Brandon — a Computer Science graduate and the founder of BR.IT Solutions. I build intelligent systems, full-stack applications, and enterprise IT solutions for clients across the UK and beyond. I combine deep technical knowledge with commercial awareness and a genuine eye for design.
Open to freelance projects, collaborations, and consultancy. Let's talk.