Skip to content
All work
Google Colab prototype showing Pinecone vector search, LangChain retrieval, and an OpenAI-generated answer.
  • Google Colab
  • Firecrawl
  • LangChain
  • OpenAI
  • Pinecone
  • Svelte
Ask FTND desktop answer with supporting research, linked resource cards, and a follow-up question field.
Ask FTND mobile interface with suggested questions, a question field, and a purple Send button.
Ask.FTND.org

Start with a question. Follow the research.

Fight the New Drug had years of research-backed articles, videos, and podcast conversations. But finding the right resource could still take some digging, especially if you didn't know what to search for. I built Ask FTND so people could start with a question and follow the answer back to the original resources.

I designed and built Ask FTND, from the system that retrieves relevant research to the chat interface that makes it approachable. I also created its branding and a review workflow so we could see where responses held up and where they needed work.

The Problem & Opportunity

The challenge wasn't a lack of information. It was finding the right piece of it. Someone could have a very specific question without knowing the language we'd used to describe the topic, or whether the best explanation lived in an article, a Fast Fact, a video, or a podcast episode.

The opportunity was to shift that work from the visitor to the system. Instead of expecting people to figure out what to search for and sift through the results, we could connect their questions to relevant information and make it easy to explore further.

A visitor starts with a question:

WordPress

Website search

The visitor handles the searching and sorting.

  1. Guess what to search

    Rephrase what you're asking into searchable terms.

  2. Scan possible matches

    Decide which results look relevant.

  3. Read, watch, or listen

    Open articles, Fast Facts, videos, or podcasts.

  4. Work out what applies

    Connect the information back to the question.

  • Rephrase and try again
  • Find a useful resource
  • Leave without a clear answer
WordPress

Ask FTND

The system connects the question to relevant information.

Ask in your own words

Start with the question you already have.

The system does the digging

Finds most relevant information across the entire resource library and brings it together into an answer.

Answer + sources

Read an answer, then explore the original resources.

  • Articles
  • Fast Facts
  • Videos
  • Podcasts

Several passages can come from one source. Resource links are deduplicated.

Technical Discovery & Proof of Concept

The chatbot needed to stay within Fight the New Drug's areas of expertise, drawing on our cataloged research and resources, and respond in our established voice without making unsupported claims. Retrieval-augmented generation (RAG) offered a way to ground those answers: it searches our content for passages relevant to a question and provides them to the language model as context for its response.

I built a headless prototype in Google Colab using 15 flagship articles and our existing response templates. The approach worked well enough to move forward, and it showed what the full application would need: a broader library, cleaner source content, and more consistent guidance for how the chatbot should respond.

I distilled the organization's mission and vision into a nine-word headline.

Architecture & Development

Moving beyond the 15-article prototype meant building a searchable knowledge base of hundreds of articles, research entries, Fast Facts, and podcast transcripts. I used Firecrawl to scrape content, LangChain to break it into searchable passages, and OpenAI embeddings indexed in Pinecone.

The first scrape exposed a problem: citation numbers, tooltip markup, and even interface text like "Copy" were becoming noise in the retrieval data. Rather than keep tweaking prompts, I temporarily modified the WordPress citation shortcode to output linked APA-style short citations inline, then re-scraped the content. Combined with simpler response instructions, this produced more consistent citations alongside the claims they supported.

I built the chatbot application in SvelteKit, retrieving relevant passages from Pinecone and using OpenAI to generate answers. I also put the Pinecone record metadata to work, turning stored source URLs into resource cards with page titles and images, while removing duplicate links.

Building the knowledge base

Ask FTND Chatbot

Ask FTND answer with supporting research and linked resource cards on a laptop.

UX & Interface Design

I added a persistent chat bubble across Fight the New Drug's main website. Visitors could type their question there and continue directly into Ask FTND with the answer already streaming.

A blank chat box isn't always the easiest place to start, especially with a topic people may not know how to approach. I added suggested questions to help visitors get started without having to figure out the perfect question.

Fight the New Drug homepage with the persistent Ask FTND chat bubble.
Persistent chat bubble
Ask FTND chat modal opened over the Fight the New Drug website.
Chat modal on click
The visitor's question redirects into Ask FTND as an answer streams in.
Redirect to streaming answer
An Ask FTND answer with linked sources and related resource cards.
Answer with source links
Suggested questions on the Ask FTND opening screen.
Question suggestions

I also adapted FTND's existing visual identity for the interface, including a simple animated variation of its logo.

Fight the New Drug
Existing identity
Adapted for Ask FTND

Testing & Iteration

Testing conversations, not just answers

We tested the complete application internally, then with our recurring donor club, to see how the response template held up across real conversations. I refined the instructions and reduced the chat history sent with each request. Pilot logs suggested follow-up questions could still work well without passing along the entire conversation.

Making review part of the system

I built a nightly workflow that archived questions, answers, and retrieved source records, along with a standalone HTML tool that made the logs easier for staff to review.

Seeing both the responses and the information behind them helped us investigate questionable answers, identify gaps in our resources, and spot patterns in how people phrased their questions.

Ask.FTND.org Slack notification reporting 64 chats logged, a Download JSON link, and no errors.
Ask FTND Chat Log Reviewer showing the interaction list, a visitor question, the chatbot response with citations, and review status and notes.
A lightweight HTML reviewer I built to turn archived JSON logs into readable conversations, with the retrieved sources available for closer inspection.

Results & Impact

Deeper engagement. Website sessions referred from Ask FTND spent more time on Fight the New Drug's main site, viewed more pages per session, and had a higher conversion rate than the sitewide average. Visitors weren't just getting answers; they were continuing to explore the resources behind them.

Supporting responses. Teams handling incoming messages and social content used it to draft replies to less common questions and check whether the resources they planned to share were the best fit.

Connecting the research. Content staff used it to explore related information across our resources without needing to know where to start.

Informing future content. Differences between how visitors asked questions and how we'd written about those topics gave the content team new ideas for editorial planning and potential SEO opportunities.

Ask FTND was built for visitors, but it also became a useful tool behind the scenes.

Reflections & Learnings

The citation issue reinforced that an AI experience is only as good as the content behind it. Cleaning up the source material and asking the model to do less with it produced better-supported answers than prompt adjustments alone.

Testing complete conversations and inspecting the retrieved material also revealed gaps our initial demo questions missed. After all, those questions were written by people who already knew the content and how to find it.

✳ Let’s make something useful

Got a good
"What if..."?

A role you think I’d fit. A project that needs figuring out. A conversation worth having. I’d love to hear from you.

A rough idea is plenty to start with.