• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
project logo

templates

leads

Lead qualifying from any data source
Public
Like
leads
Home
Code
6
PROMPT.txt
README.md
agent.ts
dashboard.tsx
db.ts
H
main.ts
Branches
1
Pull requests
Remixes
1
History
Environment variables
1
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
Viewing readonly version of main branch: v40
View latest version
README.md

Leads

Lead qualifying from any data source.

What this does

  1. This val is a webhook
  2. You can POST arbitrary lead data to it from anywhere
  3. An AI agent sorts the good leads from the bad leads
  4. Everything is stored and sorted in a dashboard

Getting started

  1. Click Remix
  2. Click here to save your OPENAI_API_KEY as an environment variable
  3. Customize PROMPT.txt (Don't remove any fields from the structured response)
  4. Get the val's HTTP endpoint from main.ts:
  5. Forward leads to this webhook as a POST request.
  6. That's it! Watch them drop into your dashboard at main.ts

How it works

  • The HTTP endpoint at main.ts ingests all inbound POST request data and passes it to the OpenAI agent in agent.ts.

AI Agent

  • The agent uses the lead data from your POST request and its web search tool to determine if the lead is a match for the criteria in PROMPT.txt.
  • By default, the AI returns {name, match, reasoning}. This is the output_data.

Storage

  • Every lead is added to the leads SQLite table: id, timestamp, input_data, output_data.
  • The main.ts dashboard shows a history of all lead assessments, successful matches first. Clicking any lead shows the full inbound and output data from the assessment.

Options

  • You can add any number of fields to the AI's output instructions in PROMPT.txt and they'll be added to output_data. You can use this to expand the AI's assessment, enrich your leads, or even just normalize lead data coming from different sources.
  • You can also add query parameters when you POST to the val endpoint. (ex: your-val-endpoint.val.run?source=signup-page). The parameters will be bundled in the _query object of input_data. This can be useful for tracking where a lead was forwarded from.
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.