← All work

AI innovation lab and startup studio

Verdant A.I.

Building first versions of AI products for early-stage startups.

My role
Full-Stack Developer
When
September 2018 – May 2021
Selected technologies
Python, Flask / Jinja, Quart, PostgreSQL, SQLAlchemy, Redis / RQ, spaCy, NLTK, Apache NiFi, Cypher, React, Angular, TypeScript, jsPlumb, Vega-Lite, WebSockets, Unity / C#, Docker
Verdant logo over a forest and mathematical diagrams

The studio

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: from a phrase to a Unity scene

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.

  1. Phrase

    A short description of a scene

  2. Parse

    spaCy and StanfordNLP find the actors and the motion between them

    1. 3D models

      Each actor matched to a model from a tagged library

    2. Motion

      The verb matched to a motion script

  3. Review

    A person checks each choice in the vignette builder

  4. 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.

  1. Run 1

    No, then no: the run reaches Make decision, which decides, so it ends at Do something.

  2. 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.

Biomass1 project graphic
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.

Decathlon Data project graphic
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.

Poe-R project graphic
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.

Revlytics project graphic
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.

NovaSense project graphic
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.

Stealth Crypto project graphic
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.

Project graphics: Verdant A.I.

More workStillRoom

Project image