Verdant was an AI innovation lab and startup studio. It partnered with early-stage startups that needed technical help building their first products, their minimum viable products (MVPs). The portfolio ran across health, environmental data, legal technology, and other fields.
We were a team of two developers, so I worked on every project in the portfolio: full-stack applications, backend services, and data workflows.
Most of that work came down to one move: turning unstructured input into a structure software could act on. A sentence became a Unity scene. Trial criteria became medical concepts in a graph. Emails became a map of who wrote to whom. A drawn diagram became rules a program could run.
It’s also where I learned to take an idea to a first working version quickly with a small team, which is what I do now in Fortrea’s AI/ML Rapid Development Studio.
E-9000 turned a phrase into a starter Unity scene. It parsed the phrase for its actors and the motion between them, searched a library of tagged 3D models for each actor, matched the verb to a motion script, and generated a Unity project with both objects and the motion in place.
A person could review each step in the vignette builder before generating the project: the parsed phrase, the model chosen for each actor, and the motion. The application connected a Flask and Jinja interface with spaCy and StanfordNLP, PostgreSQL, and Unity/C# scene logic. I implemented the vignette screens, asset handling, and Unity/C# scene scripts.
Phrase
A short description of a scene
Parse
spaCy and StanfordNLP find the actors and the motion between them
3D models
Each actor matched to a model from a tagged library
Motion
The verb matched to a motion script
Review
A person checks each choice in the vignette builder
Unity project
Both objects and the motion in place
How E-9000 turned a phrase into a starter Unity project.
TrialMix: from criteria to candidates
TrialMix matched patients with clinical-trial eligibility criteria. Its criteria-curation workflow let users review a trial’s criteria, inspect the extracted terms and medical concepts, and decide which concepts to use before matching cohorts.
I built the criteria-review screens, medical-concept highlighting, and backend views. The application used Python/Flask, Jinja, Bootstrap and jQuery, PostgreSQL, Redis/RQ, and Whoosh.
TrialMix criteria editor, shown with test data.
We connected the terms in each criterion to the UMLS and found graph relationships between concepts, which helped us find potential candidates for studies. That work included a Grakn schema experiment and research into weighted hypergraphs and graph-based matching.
Getting clinical text in
I built an Apache NiFi workflow that retrieved database records, transformed Avro into JSON, extracted the text, and sent it to MetaMap, which mapped it to the medical concepts used in criteria curation.
Emails as a relationship graph
In a 2019 email-analysis prototype, I built a pipeline that turned unstructured messages into a relationship graph: who wrote to whom, and which people and organizations they mentioned.
Python and NLTK extracted the entities. I separated accounts, messages, people, and organizations, then generated typed nodes and relationships for CSV and Cypher imports. Redis/RQ distributed ingestion across workers.
The graph represented two different things: the communication between accounts, and the entities discussed inside each message. Keeping those relationships explicit made the text useful beyond a list of search results.
Explanatory diagram of the 2019 graph model, using fictional names.
A visual rules engine
Another prototype let people assemble a decision process as connected questions, actions, and outputs. The Angular interface used a node canvas; the Python backend gave that visual structure a stored, executable form.
I implemented database models for nodes, edges, and rulesets, parsed the editor’s JSON, and added graph traversal and execution. Nodes retained their type, title, and canvas position; edges retained their source and destination. Execution began at a start node, followed question branches, and moved through linked actions.
This brought together interface design and backend logic: a diagram that people could edit, save, and run. The stack included Angular/TypeScript, jsPlumb, Flask, SQLAlchemy, and PostgreSQL.
Run 1
No, then no: the run reaches Make decision, which decides, so it ends at Do something.
Run 2
Yes: straight to Make decision, which can’t decide, so the run ends at Do nothing.
The prototype’s test ruleset, redrawn from the editor’s saved JSON. Animation created with Claude Opus 5.5 in Claude Code.
Live signals in the browser
For a wearable-sensor prototype, I built device-data APIs and real-time biometric visualizations, including embeddable line charts. My work included the move to Python/Quart, device routes, chart templates, and WebSocket delivery.
The dashboard brought heart rate, heart-rate variability, respiration, temperature, and skin-response plots together. Vega-Lite rendered the charts; an overview plot let a viewer select a time window and inspect the signal in more detail.
Live biometric charts, 2019. Shown with synthetic test data.
Reporting actuals against goals
For a January 2021 sustainability-reporting prototype, I worked on a React/TypeScript interface that compared actual performance with renewable-energy goals, then opened a quarter into location-level costs and consumption. It used Blueprint and Recharts.
Reporting prototype, January 2021. Shown with test data.
More of the portfolio
The rest of the studio’s portfolio, all of which I worked on.
Scroll sideways for more.
Marketplace software
Biomass1
A marketplace for buying and selling biomass. Members can post supply listings or requests, negotiate directly, and move from an agreed term sheet to online contracting.
My work: From July to September 2020, I built the listing and product pages, account settings, the contract builder and PDF upload, and the admin contract views and user roles.
Predictive sales analytics
Decathlon Data
AI-assisted sales analysis for a specialized wholesale market. Decathlon supplied the models; our team at Verdant worked on making them stable, scalable, and repeatable.
Computer vision in healthcare
Poe-R
Computer vision and automation for tracking hospital activity, equipment, and inventory. The project aimed to give operational teams a clearer view of resource use and staffing needs.
Econometric analysis
Revlytics
An econometric engine combining time-series analysis, ARIMA, Pareto analysis, and Shapley methods with data-platform integration. Built around the work of domain experts and analysts.
Medical sensor integration
NovaSense
A medical IoT platform combining biomedical sensor signals into one view of a resident. The project explored how AI could connect fragmented readings to support care teams.
Identity and property data
Stealth Crypto
A confidential project connecting blockchain-based identity and document management with property-price analysis. Its scope included combining asset information and other data sources to estimate real-estate values.