Shahzaib Khan 
Systems Engineer β’ Backend β’ Automation β’ Infrastructure
Designing systems that scale across data, applications, and infrastructure.
π§© Core Capabilities
- Backend systems (Flask, API design, session-based authentication)
- Infrastructure & deployment (Linux, Nginx, systemd, SSL)
- Automation pipelines (n8n, scripting, workflow orchestration)
- System architecture (modular apps, shared infrastructure, scaling strategies)
π Expanded Capabilities
- Custom data structure design (beyond STL)
- Memory-aware system design & performance tradeoffs
- Frontend system design (UX + API interaction patterns)
- Configuration management & infrastructure as code (Ansible)
- Multi-layer system thinking (data β app β infra β automation)
- Business system design (data modeling, workflows, real-world constraints)
- Document generation pipelines (invoice/PDF systems, structured outputs)
ποΈ Case Studies (Deep Dive)
To reveal the problem statement, the system design, and the final impact of any case study, click below
π
1) Application & Business Systems
Booking Management System (BMS) β End-to-End Invoice & Workflow Engine
Problem
Manual booking and invoice workflows typically suffer from:
- Fragmented data handling
- Manual invoice generation
- Inconsistent formatting and records
- Lack of system-level structure for scaling
Solution
Designed and implemented a Booking Management System (BMS) focused on:
- Structured booking data management
- Automated invoice generation
- Workflow-driven processing
- Clean separation between data, logic, and output
System Design
Core Components
- Booking data layer (structured input handling)
- Processing layer (business rules, calculations)
- Output layer (invoice generation / formatting)
Flow
Input β Validation β Processing β Invoice Generation β Output
Key Engineering Decisions
- Treat invoices as generated artifacts, not stored static data
- Separate business logic from presentation layer
- Design for extensibility (new invoice formats, workflows)
- Ensure deterministic outputs from structured inputs
Features
- Automated invoice creation
- Structured data handling for bookings
- Reusable generation logic
- Clean formatting pipeline
Tradeoffs
- More upfront system design vs quick scripting
- Requires strict data structure discipline
Impact
- Eliminates manual invoice generation
- Ensures consistency and reliability
- Demonstrates real-world business system engineering
- Bridges gap between application logic and operational workflows
Google Custom Search System β Controlled Search UX & API Orchestration
Reference: https://github.com/HypertextAssassin0273/google-custom-search
Problem
Default search integrations:
- Provide limited control over UX
- Couple UI tightly with API responses
- Lack flexibility for multi-source or structured search
Solution
Built a custom search interface layer that:
- Decouples UI from API response structure
- Enables controlled rendering and interaction
- Supports extensible search engine configurations
Key Engineering Decisions
- Separate search logic, UI rendering, and configuration
- Introduce structured result handling pipeline
- Design UI for progressive interaction (preview vs navigation)
- Optimize frontend performance with lightweight rendering
Advanced Features
- Dynamic search engine selection
- Result preview system (without navigation disruption)
- Planned extensibility for multi-source search
- UI/UX tuning for fast interaction
Tradeoffs
- More frontend complexity vs plug-and-play solutions
- Requires manual handling of API edge cases
Impact
- Full control over search experience
- Extensible foundation for future search aggregation
- Demonstrates frontend + system design thinking
- Serves as a base for extensible search aggregation systems
2) Infrastructure & Automation Systems
Configuration Management with Ansible β Reproducible Infrastructure
Reference: https://github.com/HypertextAssassin0273/Configuration_Management_with_Ansible
Problem
Manual server setup leads to:
- Configuration drift
- Inconsistent environments
- Difficult scaling
Solution
Implemented Ansible-based configuration management:
- Declarative system setup
- Repeatable provisioning
- Infrastructure as code approach
Key Engineering Decisions
- Use playbooks for deterministic setup
- Structure roles for modular reuse
- Focus on idempotency (safe re-runs)
- Align with existing deployment workflows
Capabilities
- Automated package installation
- Service configuration
- Environment standardization
Tradeoffs
- Initial setup complexity
- Requires discipline in maintaining playbooks
Impact
- Eliminates configuration inconsistency
- Enables scalable infrastructure replication
- Bridges gap between development and operations
Automation-First Workflow Design β System-Level Process Orchestration
Problem
Manual and semi-manual workflows:
- Introduce inconsistency
- Donβt scale with volume
- Require continuous human intervention
- Become bottlenecks in otherwise automated systems
Solution
Designed workflows with an automation-first mindset, using:
- n8n for orchestration
- Custom scripting for control
- Structured data flow between steps
System Design
Workflow Pattern
Trigger β Data Processing β Conditional Logic β Action β Logging/Output
Core Principles
- Every repeatable task should be automated
- Workflows must be deterministic and debuggable
- Systems should degrade gracefully (fail-safe design)
Key Engineering Decisions
- Use visual workflow tools (n8n) for orchestration clarity
- Offload complex logic to scripts where needed
- Maintain separation between:
- Trigger layer
- Processing layer
- Execution layer
Use Cases
- Email outreach automation
- Data processing pipelines
- Service-to-service integrations
Tradeoffs
- Added upfront design complexity
- Requires monitoring and observability for reliability
Impact
- Reduced manual workload significantly
- Increased reliability and repeatability
- Enabled scaling of operations without proportional effort increase
Automated Deployment System (Flask Apps)
Reference: https://github.com/HypertextAssassin0273/flask-app
Problem
Manual deployments are fragile and inconsistent.
Solution
Script-driven deployment system integrating:
- systemd services
- Nginx configuration
- SSL provisioning
Key Features
- Commit-specific deployment
- Rollback support
- One-command updates
Impact
- Production reliability
- Reduced operational overhead
Modular Multi-App Architecture
Problem
Scaling multiple apps leads to tightly coupled systems.
Solution
Modular ecosystem with shared infrastructure:
- App isolation
- Shared services layer
- Future-ready unified system design
Impact
- Clean scalability
- Reduced cross-app dependencies
Hybrid Asset Delivery Strategy
Problem
Static assets either become scattered or bottlenecked under a single system.
Solution
Introduced a dual-CDN strategy:
- GitHub CDN β small, lightweight, app-specific assets
- Cloudflare R2 β scalable shared assets
Impact
- Performance optimization
- Cross-project asset reuse
- Clean separation of concerns
3) Data Structure & Systems Research
Indexed Struct β Multi-Attribute Access Layer on AVL Trees
Problem
Standard data structures:
- Optimize for a single key
- Struggle with multi-attribute querying
- Require duplication or inefficient scans
Design Approach
Built an abstraction over AVL trees to support:
- Multiple indexing attributes
- Efficient lookup across different dimensions
- Structured access patterns without duplication
Key Engineering Decisions
- Adapter layer over AVL tree
- Attribute-based indexing strategy
- Maintain balance + performance guarantees
- Avoid redundant storage
Tradeoffs
- Increased structural complexity
- Higher maintenance cost vs simple containers
- Requires careful synchronization of indices
Impact
- Enables database-like querying in in-memory structures
- Bridges gap between DSA and system-level data modeling
- Shows ability to design beyond textbook structures
Optimized Multi-Attribute AVL System β Research-Based Data Structure
Reference: https://hypertextassassin0273.github.io/assets/img/projects/DS-R-Project_Report.pdf
Problem
Efficient querying across multiple attributes typically requires:
- Multiple data structures
- High memory overhead
- Complex synchronization
Research Direction
Designed a unified structure that:
- Maintains AVL balancing
- Supports multi-attribute indexing
- Optimizes lookup without duplication
Core Concepts
- Attribute-driven node organization
- Balanced tree guarantees (O(log n))
- Optimized traversal paths
- Structured data abstraction
Engineering Depth
- Combines theoretical DSA with practical constraints
- Explores performance vs flexibility tradeoffs
- Moves toward database-like in-memory systems
Impact
- Demonstrates research-oriented engineering
- Strong foundation in data structure design beyond STL
- Applicable to indexing engines and query systems
Custom Vector & Memory Behavior Exploration
References:
- https://hypertextassassin0273.github.io/blog-posts/2021-03-25-optimized-minimal-custom-vector-container/
- https://hypertextassassin0273.github.io/blog-posts/2021-04-19-node-garbage-collector/
Focus Areas
- Minimal vector implementation
- Memory lifecycle management
- Node-level garbage collection concepts
Key Learnings
- Memory allocation strategies impact performance heavily
- Garbage collection is not just language-level β can be structural
- Tradeoffs between simplicity, control, and safety
Impact
- Strengthened low-level systems thinking
- Direct influence on later container designs
- Better understanding of allocator behavior
Segmented Vector β Cache-Aware Dynamic Container Design
References:
- https://hypertextassassin0273.github.io/blog-posts/2021-08-18-custom-segmented-vector-container/
- https://github.com/HypertextAssassin0273/Data_Structures_in_Cpp/blob/main/MY_DS_LIBRARY/Contiguous_Structures/Segmented_Vector.hpp
Problem
Traditional std::vector suffers from:
- Expensive reallocations during growth
- Full memory copy on resize
- Poor scalability under frequent expansions
Design Approach
Implemented a segmented contiguous structure:
- Data stored across multiple fixed-size blocks
- Logical contiguity, physical segmentation
- Avoids full reallocation during growth
Key Engineering Decisions
- Segmented memory layout instead of monolithic buffer
- Index mapping layer to preserve O(1) access
- Growth via block allocation, not full copy
- Balance between cache locality and allocation cost
Tradeoffs
| Benefit | Cost |
|---|---|
| No full reallocation | Slightly more complex indexing |
| Better scalability | Reduced perfect cache locality |
| Predictable growth | More memory fragmentation |
Impact
- Eliminates major bottleneck of vector resizing
- Provides scalable alternative for high-growth workloads
- Demonstrates understanding of memory models + performance tradeoffs
π§ Engineering Philosophy
- Systems > components
- Tradeoffs > assumptions
- Performance is a design decision
- Infrastructure is part of the product
π My Technical Blog Posts
β‘ Closing
Good code runs once, but good systems keep running.
Personal projects
View all- Loading
About
Developer | DevOps Mindset | Data & Cloud Enthusiast | FAST Undergraduate