top of page

Teleqo Experience 

At Teleqo Tech I'm in charge of helping in the design and feature implementation of their flagship project Ranger. A LIDAR extraction program that allows uses to collected data on cities, to create smart cities. I have worked at this company for 2 years and have done many things for Ranger. My current most notable key contributions are:​

  • Sign extraction

  • Custom Scalable Undo/Redo System

  • Modular Real-Time Save System for Asset Synchronization

Sign Exctraction

I am fully in charge of creating to tools and pipeline of sign extraction. The goal is to design and implement a minimal click method to extract all data of a sign from a Point Cloud scan we get from the LIDAR.​ This feature has many attributes that I don't want to take over this entire section. I will focus on the most substantial those being the system behind the auto detection, and the minimalist design behind the MUTCD search window with a pool able search system.

Auto Detection:​

To streamline data collection, I developed a Unity tool that automates key sign placement tasks using 3D point cloud data. The tool detects the sign’s base by defining a dynamic 3D search area around the selected object, performing spatial queries, and clustering results by intensity to identify prominent surfaces. It analyzes surface normals for alignment and uses vertical slicing to isolate dense, flat layers at the base. A fallback "ghost" version of the sign preserves the original placement for manual correction.

​

Simultaneously, the tool performs a secondary point cloud search below the clicked point to detect ground level. It calculates spatial bounds, segments points into vertical clusters along the Y-axis, and identifies the flattest surface to estimate real-world height, visually confirmed with a debug line. The tool also infers potential sign dimensions based on the largest detected surface maxed against intensity and normals again and auto-applies the appropriate MUTCD image when selected.

​

A demonstration video shows the entire process from the user’s perspective.

MUTCD Search Window:

Designed and implemented a fast, intuitive UI panel to help users quickly and accurately identify road signs from thousands of possibilities, even when the user doesn’t know what sign they’re viewing. At the top of the interface is a Recent Signs section that displays the last five selected signs, also accessible through a radial menu without needing to open the full search window.

​

The search system is optimized for speed and clarity, breaking signs down into key attributes like legend text and codes, accompanied by visual cues for easier identification. A custom pollable search backend enables near-instant results, scanning thousands of entries in milliseconds.

​

Signs are presented as large, visually distinct buttons showing the image, code (top-left), category (top-right), and name (bottom), with an optional star for favoriting frequently used signs. The library is organized into three tabs: All Signs, MUTCD, and State, allowing users to filter based on client-specific catalogs.

​

All sign data is dynamically generated from an external Excel spreadsheet I created. This makes it easy to update or customize sign sets by simply dragging the spreadsheet into the project, enabling rapid configuration for each client without modifying code.

​

A demonstration video shows the MUTCD Search window in action:

Custom Scalable Undo/Redo System

To support the unique requirements of our system and client use cases, I designed and implemented a fully custom Undo/Redo system from the ground up. This framework was built with scalability, modularity, and developer usability as top priorities.

​

At the core of the system is a master BaseAction class that developers can easily inherit from. By overriding two core methods Undo() and Redo() they can define custom behavior for any feature without altering the underlying system. Once implemented, developers simply call their personalized action through the ActionManager, which adds it to a centralized action list that tracks all operations. When an undo is triggered, the system automatically prepares and queues the corresponding redo logic, ensuring consistent and seamless state management.

​

Additionally, I implemented a suite of developer tools, including:

  • Action pausing to prevent certain operations from being recorded

  • Selective action suppression or removal

  • Debugging aids to inspect and manage the action stack in real time​​​

​

This architecture enables rapid integration of new features as requested by management or clients, with minimal overhead for individual developers. While empowering the team to scale the system indefinitely, accommodate complex workflows, and maintain a clean separation of concerns across all features.

​

A demonstration video shows some of the many features we use this system with:

Modular Real-Time Save System for Asset Synchronization

Designed and implemented a scalable, high-performance Save System in Unity to manage asset persistence across both backend and frontend environments. The system supports real-time synchronization, ensuring that all users, whether working individually or collaboratively, are always presented with the most up-to-date project state, without requiring manual refreshes or reloading.

​

At the core of this system is a highly flexible serialization architecture capable of handling diverse asset types, each with its own distinct data requirements. Assets manage their own data schemas, allowing for clean modularity and minimal overhead in the global save structure. This approach supports easy expansion as new asset classes are introduced, without impacting existing infrastructure.

​

Save operations are simultaneous and seamless: data flows from backend to frontend while updates are broadcast in real time to all active users in the session. This guarantees instant visibility of newly created or modified assets, streamlining collaboration and workflow efficiency.

​

While specific implementation details are protected under NDA, the architecture prioritizes performance, scalability, and data integrity across shared environments.

​

In addition, the system supports full client-side customization of asset data, allowing each deployment to reflect unique client requirements. Asset definitions and configuration can be dynamically generated per client, enabling flexible database construction without requiring codebase changes.​

​

Due to NDA safety reasons I will not provide a video demonstration of this aspect of the product.

bottom of page