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.5.0.tar.gz (192.8 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.5.0-py3-none-any.whl (98.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: teft_leads-0.5.0.tar.gz
  • Upload date:
  • Size: 192.8 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.5.0.tar.gz
Algorithm Hash digest
SHA256 a57a276da6b18cd39c2ff8ba4bba21d2d25e6c96e466463f71862d2c75aba8c0
MD5 b32ceeaa5c0c4ff29d68a7d0596635e1
BLAKE2b-256 9c710a88d48d9ef39ac7b4b5bbae7db2cae0bec1687b65a6ddb896e25e21d0a0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: teft_leads-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 98.9 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 550607ea4cdff9fc2c619b458df1b6510522485bf1aa6f4a785b4fe98671d264
MD5 c8f52d6e39a7075f75b1c60335aa6cab
BLAKE2b-256 89ae04cd2827f71b2f9ba26703f2f6b7fb48bdf74994e0e57ec4e8890e9af454

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