Skip to main content

Local-first LinkedIn intent-signal lead-finder with a local web app — real signals, not stored databases.

Project description

teft

teft (Norwegian: the instinctive nose for a lead — a scent for who's in-market right now). Repo slug is still linkedin-lead-finder; the tool is named teft.

A personal, local-first tool that turns a freeform brief into a ranked, explained shortlist of high-intent LinkedIn prospects — "real signals, not stored databases."

For colleagues — try it in 2 minutes

Nothing to clone. It runs entirely on your own machine (the web app is 127.0.0.1-only).

  1. Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh (Windows: see docs.astral.sh/uv)
  2. Run: uvx teft-leads serve — your browser opens the app. (PyPI name is teft-leads; the command you type once installed is still teft.)
  3. In the app: Settings → paste your keys → Search → run it.

That's it. The rest of this page is for people building on teft.

About / planning

Planned with the wayfinder workflow; the plan lives as GitHub Issues. Two maps:

  • Planning map (#1)complete. Destination reached: the locked v0 definition.
  • Build plan (#6) — stack, LLM, architecture, name, milestones.
  • Implementation map (#7)active. v0 as five wayfinder:task milestones (M0→M4); the frontier (open, unblocked, unassigned) is the work takeable now — currently M0 (#8).

See CONCEPT.md for the original seed brief.

v0 at a glance

Python CLI on your Mac, over your own logged-in LinkedIn session (Patchright, li_at cookie reuse).

Guided: teft run — one command walks you through config (prompts + saves any missing key/cookie), then product → brief → buyer-intent phrases (or reuse the last campaign), scrapes, ranks, and opens the results UI. Defaults to headless/fast.

Or step by step:

  • teft scrape -p "phrase" … — content-search → per-candidate activity/profile → candidates.json.
  • teft rank --brief brief.txt — each candidate → the "why now" prompt, SKIP filter → ranked shortlist-<date>.{md,json}.
  • teft view — a local, zero-dependency results UI: lead cards, expandable post, Open profile / Open post / copy email, and contacted + notes saved to ~/.teft/actions.json.

No Fit %, no monitoring, no outreach, no external services. .env is auto-loaded (no manual source). Speed/stealth knobs: TEFT_HEADLESS=1, TEFT_MIN_DELAY / TEFT_MAX_DELAY, TEFT_MAX_CANDIDATES (cap per query, default 25).

LLM provider

rank is provider-pluggable. Default is claude-opus-4-8 (the tier the "why now" prompt's SKIP-rule calibration was validated on). To use GPT-5.6 instead, set TEFT_LLM=openai (defaults to gpt-5.6-terra; override with TEFT_MODEL, e.g. gpt-5.6-sol / gpt-5.6-luna) and OPENAI_API_KEY. The SKIP calibration is only proven on Claude — re-run the fixtures on a new provider before trusting it (see VALIDATE.md).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

teft_leads-0.3.0.tar.gz (145.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

teft_leads-0.3.0-py3-none-any.whl (80.8 kB view details)

Uploaded Python 3

File details

Details for the file teft_leads-0.3.0.tar.gz.

File metadata

  • Download URL: teft_leads-0.3.0.tar.gz
  • Upload date:
  • Size: 145.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for teft_leads-0.3.0.tar.gz
Algorithm Hash digest
SHA256 868fbd07ffb7c37a5854eeddfbd2a6d5f6cf9b32538f37682f3a395cce029402
MD5 7792926ba44aa08658982b0560daf810
BLAKE2b-256 38d07547ecded1c921a039aa514184042953d603ddd1506d94d8026476f70576

See more details on using hashes here.

File details

Details for the file teft_leads-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: teft_leads-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 80.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for teft_leads-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e6e03fe63594c038e6cbecdfb486952d1dce6d59c160f8003f51cb7d2691f8e
MD5 fca0f2c9e079358d6604b0776bb04b1a
BLAKE2b-256 1bf0394a7fdc9ec6e118ad5717d22ebc68b4e7334aa18f1babcf15bd7e4325fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page