go back ↩
# patentnerd
# nero
# arpaudit
# q-learning
# election map
# particle filter localization


# patentnerd

PatentNerd is an AI-powered system designed to help inventors and patent practitioners write clearer, stronger patent claims. The tool uses large language models to analyze claim structure, identify logical gaps or ambiguities, and suggest refinements aligned with patentability standards such as enablement and definiteness.

I co-developed PatentNerd with collaborators at NYU Courant, engineering a full preprocessing and analysis pipeline for patent documents. This included PDF parsing, claim segmentation, metadata extraction, and prompt orchestration for structured model feedback. The project emphasizes human-in-the-loop design: models surface issues, but users retain interpretive control over revisions.

↩ Back to top

# nero

NERO (Non-Equivariance Revealed on Orbits) is a visual analytics system for probing how machine learning models behave under transformations such as rotation, translation, and reflection. Rather than evaluating models only on static accuracy metrics, NERO reveals how confidence and predictions evolve along transformation orbits in input space.

Working with the Visualization Group at the University of Chicago, I rebuilt NERO from an early prototype into a scalable diagnostic dashboard. I implemented the full visualization pipeline and quantitative summaries, enabling researchers to identify failure modes where model confidence collapses under symmetry transformations. The system supports deeper questions about representation learning and inductive bias.

↩ Back to top

# arpaudit

ARPAudit was a data journalism project conducted during my time as a Data Journalism Fellow at the Mansueto Institute for Urban Innovation , in partnership with the Chicago Tribune . The project investigated how the City of Chicago and Cook County allocated and spent billions of dollars from the American Rescue Plan Act (ARPA), with a focus on accountability, timing, and political variation in spending decisions.

The central challenge was that ARPA spending data is buried in massive SLFRF Quarterly Report PDFs—often hundreds of pages long—making systematic analysis nearly impossible by hand. I built Python- and R-based pipelines to scrape and standardize these reports into structured datasets, linking projects, subawards, subrecipients, obligations, and expenditures across thousands of records. We designed the pipeline to be extensible, enabling future quarterly updates with minimal manual intervention.

Using these datasets, we created interactive visualizations—including treemaps, maps, scatterplots, and time-series charts—to surface both high-level trends and granular irregularities in ARPA use. Our analysis revealed that while most funds had been obligated, substantial amounts remained unspent, including $41.9M in Chicago and $117K in Cook County with no linked expenditures. We also identified significant out-of-state spending and political differences in allocation strategies between mayoral administrations, findings that informed investigative reporting and public accountability efforts.

↩ Back to top

# q-learning

This project explored how reinforcement learning can be integrated with real-world robotic perception and manipulation. The goal was to train a robot to identify three colored blocks and place each one in front of its corresponding AR tag, learning an optimal policy for arranging objects through interaction with its environment rather than hard-coded rules.

We implemented a Q-Learning framework with a 64×9 Q-matrix representing 64 discrete states and 9 possible actions. The robot used a camera and OpenCV-based color and pattern recognition to detect blocks and AR tags, while motion planning and execution were handled through ROS and the MoveIt package. During training, the system explored actions randomly, updating the Q-matrix based on rewards for correctly placed blocks until the policy reliably converged.

Once trained, the robot consistently navigated to colored blocks, picked them up, and placed them precisely in front of the correct AR tags by following the learned policy of maximum expected reward. The project demonstrated the challenges and successes of deploying reinforcement learning in physical systems, including perception noise, calibration, and action precision, and provided hands-on experience at the intersection of learning algorithms, computer vision, and robotic control.

↩ Back to top

# election map

Election Map is an interactive visualization tool for exploring U.S. Presidential election results across states and years. Rather than relying on static colormaps alone, the project emphasizes multiple coordinated views—allowing users to examine both popular vote and Electoral College outcomes through a hexagonal U.S. map, a scatterplot, and dynamic balance bars.

The visualization is driven by several linked CSV datasets containing vote totals, state metadata, hex coordinates, and candidate information. Using d3.js, states are rendered as hexagons and colored according to different colormap modes (RVD, PUR, and LVA), while the scatterplot positions states based on vote magnitude and political leaning. User interactions—including timeline sliders and mode toggles—trigger coordinated updates across views via smooth d3 transitions, with tooltips providing detailed per-state information.

The completed system enables users to explore historical election trends over time and across states, revealing shifts in political balance and voting patterns. Balance bars update dynamically to reflect year-specific totals, and interactive controls provide immediate visual feedback. The project demonstrates effective data wrangling, integration of complex CSV-driven layouts, and the construction of responsive, multi-component visualizations that support exploratory political analysis.

↩ Back to top

# particle filter localization

This project focused on the classic robotics problem of localization: enabling a robot to infer its position within a known map using noisy motion commands and imperfect sensor data. We implemented a full particle filter pipeline from scratch, representing the robot’s belief state as a cloud of possible poses that gradually converges toward the true location through repeated motion and sensor updates.

The system initialized particles uniformly across the map and updated them using a “rotate, then translate” motion model with injected noise to reflect real-world uncertainty. Sensor updates compared readings from the robot’s LDS-01 LIDAR to simulated measurements for each particle using a likelihood field model with Gaussian filtering. Particle weights were normalized and resampled at every step, allowing high-probability poses to persist while implausible hypotheses were discarded. For efficiency, the implementation relied heavily on NumPy and selectively evaluated only 8 LIDAR orientations rather than the full 360.

The final system successfully localized the robot as it navigated a maze in both simulation and physical trials, with particles tightly clustering around the true pose. Along the way, challenges such as indexing errors, calibration mismatches, and differences between simulated and real-world dynamics highlighted the importance of careful debugging and noise modeling. The project provided hands-on experience in translating probabilistic robotics theory into robust, working code for embodied systems.

↩ Back to top