Shahar Ashkenazi.
Technical Project Manager

- Managing an enterprise platform: 1 to 7 enterprise clients, 15 to 445+ active superusers, 85 to 2,300+ active users, 400 to 1,100 records processed daily.
- Leading 3 parallel software projects and managing a cross-functional team of 5 developers from planning to production.
- Leveraging AI tools such as Claude Code, Cursor, and ChatGPT to accelerate product delivery, technical planning, and software development.
Personal projects
Carvertise
A geofence-first advertising platform for digital screens installed in vehicles - content is dynamically requested based on real-time GPS location, not pushed on a fixed schedule.



Overview
- Geofence-first ad engine for in-vehicle screens
- Content requested by GPS location - not pushed on a fixed schedule
- Lightweight MVP to validate the core loop before investing in infrastructure
Role & Ownership
- Solo PM + Android developer
- Owned everything: architecture, Android dev, geofence logic, Firebase, media delivery
Product Vision
- Out-of-home ads are static - same message everywhere
- Hypothesis: location-triggered content outperforms fixed-schedule ads
- No ML stack needed - just location + timing
System Design
- Android app subscribes to continuous GPS updates
- Zone map stored as remote JSON on cPanel server
- Zone match detected - Glide loads correct ad asset
- Firebase handles live config sync
- All zone matching runs on-device - no backend round-trip per check
Tech Stack
Android Studio · Kotlin · GPS APIs · Firebase Realtime DB · JSON APIs · Glide · cPanel
Key Decisions
- Geofence-first - location decides the ad, not time
- Client-side matching - low latency, no server call per zone check
- Remote JSON config - update zones without app release
- Offline fallback - last known ad shown if GPS/connectivity drops
Problems I Solved
- GPS error margins - tuned zone radius to avoid false positives from nearby zones
- Fast-moving vehicles - GPS updates every 1-5s, handled with predictive zone buffering
- Connectivity drops in tunnels/parking - graceful degradation, cache last valid ad
- Media buffering during zone transitions - solved with Glide prefetch + memory cache
- Firebase sync conflicts - handled config updates arriving mid-session
Where I've worked
Technical Project Manager
Lead a cross-functional development team end-to-end, owning the path from spec to production release.
- Grew the platform's enterprise client base from 1 to 7, scaling to 445+ active superusers and 2,300+ active users on the system.
- Own sprint planning, specs, QA, and release for a team of 5 developers across 3 parallel projects.
- Design system integration architecture and API contracts handling 1,100+ records processed daily between internal platforms and third-party vendors.
- Drive technical discovery - translating enterprise client requirements into scoped, actionable delivery plans.
- Leverage AI tools such as Claude Code, Cursor, and ChatGPT to accelerate product delivery, technical planning, and software development.
Project Manager
- Led client discovery sessions, analyzed business requirements, and translated them into functional requirements and implementation plans for ERP projects.
- Managed customer implementation processes, coordinating between clients and cross-functional teams to ensure successful project delivery.
Commando Squad Commander
Commanded a 25-soldier squad through complex operational missions - planning under uncertainty, making the call with incomplete information, and owning outcomes with zero room for a second attempt. Trained and developed soldiers, building execution standards under demanding conditions.
Skills & Tools
AI & Product
- Claude Code
- Cursor
- Notion
- Figma
Engineering
- REST APIs
- System Integrations
- Firebase
- Git
- Postman
Execution
- Jira
- Agile Delivery
- Confluence
Get in touch
Off the clock: training for a half marathon, drives manual because automatic feels like cheating.