Computer engineer by degree, marketing and brand leader by trade. I lead brand and digital growth at AM PM Properties in Calgary, and I still write the software my marketing runs on: the Python and Node tools below audit tracking, watch search coverage and stop a client report from going out on broken data.
I started in 2011 building websites, spent six years as a senior web developer, then seven years running marketing and web operations for 10+ client accounts at a time. So I can plan the campaign, and I can build the system that tells us honestly whether it worked.
Tools built for problems I hit in real client work. Each one runs on files or APIs an agency already has, and every repository runs its test suite in CI on every push.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The tools form one chain rather than ten unrelated scripts. Each writes JSON the next one reads.
flowchart LR
A["ga4-event-auditor<br/>tracking QA"] --> P
B["gsc-coverage-monitor<br/>index coverage"] --> P
C[("metrics, consent and<br/>conversion exports")] --> P
P{{"marketing-report-preflight<br/>10 data-integrity checks"}}
P -- "send" --> R["agency-report-builder<br/>branded client report"]
P -- "do not send" --> X["fix the data first"]
classDef tool fill:#16191E,stroke:#3A414B,color:#E9ECEF
classDef gate fill:#16191E,stroke:#E8963C,stroke-width:2px,color:#E8963C
classDef stop fill:#16191E,stroke:#B4482F,color:#E9ECEF,stroke-dasharray:4 3
class A,B,C,R tool
class P gate
class X stop
Writing, not code: digital-marketing-case-studies (anonymised campaign write-ups) and social-media-marketing-playbook (the channel playbook I use for service businesses).
Planned, not shipped. Listed so the direction is clear, and revised whenever client work says something else matters more.
Fifteen years across both halves of the job. The tags show which half each role leaned on.
University of Isfahan, 2008 to 2012
Islamic Azad University, Science and Research Branch, 2013 to 2015