CSV cleanup should explain what it rejected. I built a small Python CLI as a personal project usi...CSV cleanup should explain what it rejected. I built a small Python CLI as a personal project usi...
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
I built a small Python CLI as a personal project using synthetic data. Its five-row example produces three accepted rows and two rejected rows, with a separate report naming each rejection reason.
The rules are explicit: trim surrounding whitespace, keep the first occurrence of each nonempty record ID, and reject missing or duplicate IDs. IDs stay as strings, so leading zeros survive. Python’s CSV parser handles quoted commas correctly. Email domains are lowercased while local-part casing is preserved; this does not verify email deliverability.
Rerunning with existing output filenames fails instead of overwriting them. Malformed input is rejected before output files are created. The repository includes sample inputs, expected outputs, five CLI tests, and run instructions.
I used stimulated data to examine the effect of storage equipment and associated variables on vaccine excursion.
I downloaded the Vaccine Cold Chain Management dataset from Hugging Face using Python. I organized and combined the data from regional vaccine stores, district hospitals, and rural health posts using MySQL, then used Tableau Public to build an interactive dashboard exploring equipment functionality, staff training, temperature compliance, vaccine wastage, and power outages.
Three key insights were uncovered.
Rural health posts recorded the highest heat and freeze excursion rates.
Longer power outages were associated with lower temperature compliance.
Reliable equipment alone isn't enough. Staff training and proper maintenance matter too.
Project AIR is an open-source toolkit that keeps a tamper-proof record of what AI agents do. Every action an agent takes gets signed, chained to the step before it, and tied to the person who authorized it. The chain is anchored to Sigstore Rekor, a public transparency log, so anyone can check later that nothing was changed or deleted. When something goes wrong, you can show exactly what happened and who approved it, instead of just saying it happened.
It also runs 16 detectors over every record, covering all ten risks on the OWASP Top 10 for Agentic Applications, three from the OWASP list for LLM apps, and three of its own. It can stop an agent mid-action until a person signs off. It plugs into LangChain, LlamaIndex, and the OpenAI, Anthropic and Gemini SDKs with a line or two of code.
I built the Python library and command-line tool, published on PyPI as projectair (now at version 1.3.1) under the Apache 2.0 license, plus the website and dashboard in SvelteKit. We run it on our own infrastructure too: every request to vindicara.io is recorded and anchored to Rekor every minute.
LLMs don’t return data. They return text that looks like data, most of the time. And “most of the time” is how production systems break.
I made a 6-minute video on why Pydantic is the one library every AI engineer should know:
→ One class does three jobs: it tells the model what to produce, validates what comes back, and powers autocomplete
→ Your function signature becomes the tool definition
→ Validation errors become feedback the model can fix itself
→ It’s already in your stack (OpenAI, Anthropic, LangChain, FastAPI…)
Plus a quick look at Pydantic AI, which runs that whole loop for you.