Personal Projects
Side projects exploring EVs, data analysis, and infrastructure.
Build a RAG-based application that answers questions about electric vehicles and generates realistic DC charge curves for any vehicle class, combining a curated knowledge base with an LLM-driven curve engine backed by real reference profiles.
When I first joined the EV industry, I spent weeks trying to piece together the fundamentals from documentation scattered across the web. It was frustrating, and I knew I was not the only one going through it. So I decided to build something that would have helped me back then. A tool that brings EV technical knowledge together in one place and actually lets you have a conversation with it, using RAG over EV technical documentation with charging behaviour modelling built in.
- Built an EV Q&A system that retrieves relevant knowledge chunks from a curated knowledge base and generates grounded answers via Claude, reducing hallucination risk through retrieval augmentation.
- Built a Charge Curve Generator that takes vehicle class, battery size, and max DC power as inputs and produces a native charge curve alongside a delivered curve clipped to the site charger capacity, with supporting metrics and reasoning.
- Built an incremental RAG ingestion pipeline using OpenAI embeddings stored in PostgreSQL via pgvector, sourcing from curated EV articles and technical PDFs, with only new content embedded on each run.
- Deployed the knowledge base on AWS RDS with credentials managed via Secrets Manager and exposed both capabilities via a FastAPI backend with a Next.js frontend for interactive use.
- Produces grounded, cited answers to EV questions, reducing hallucination risk through retrieval augmentation.
- Enables users to simulate realistic charging behaviour for different vehicle classes.
Use real-world EV charging session data from Scotland's ChargePlace network to identify where additional infrastructure is needed and what type of capacity to add, giving planners evidence-based, actionable recommendations.
When I discovered the UK's public EV charging network might not be keeping pace with rising EV adoption, I wanted to find out if there was enough public infrastructure to meet demand. ChargePlace Scotland publishes real session level data, which gave me the chance to investigate. This project aims to use machine learning to surface charging patterns across Scotland and identify which regions are facing the most pressure.
- Analysed utilisation and energy consumption across all public EV charging points in Scotland using charging profiles, visualised through an interactive Streamlit dashboard.
- Built a production grade Medallion ETL pipeline on Databricks using PySpark and Delta Lake, automating ingestion of charging sessions and connector level location data into Databricks volumes and tables.
- Orchestrated the Bronze to Silver to Gold refresh as a scheduled Databricks Workflow that parallelises the two independent Silver builds.
- Built an AI agent using Claude, grounded with the web search and web fetch tools, that suggests fixes for postcode and coordinate anomalies identified by a deterministic data quality system. The system triangulates the feed postcode, coordinates reverse geocoded in bulk via the postcodes.io API, and writes findings into an data quality review table.
- Deduplicated prompts across charge points sharing a site and ran requests concurrently to cut the cost and latency of the AI step.
- Designed a Demand Pressure Index per charge point, computing saturation the time all connectors are simultaneously occupied and utilisation as occupied over available connector hours, then combining both into a weighted percentile rank to identify which charging sites are most strained and should be prioritised for new infrastructure.
- Gives infrastructure planners a ranked, evidence based shortlist of individual charging sites to prioritise for new investment, with saturation and utilisation rates as transparent supporting evidence rather than a black box score.
- Eliminated the need to manually run and monitor the data pipeline by replacing three individually triggered scripts with a single scheduled Databricks Workflow.
- Reduced the manual effort needed to correct mislocated charge points by automating fix suggestions through an AI agent, while keeping every correction human reviewed and auditable.