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.1.0.tar.gz (107.3 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.1.0-py3-none-any.whl (65.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: teft_leads-0.1.0.tar.gz
  • Upload date:
  • Size: 107.3 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.1.0.tar.gz
Algorithm Hash digest
SHA256 876eac65b2e5ca3bfb40c5d0938b548d21ce31b0dc0a78c75e9ce4278e57307d
MD5 71e595ba4b72d7364e01b1bbe47121de
BLAKE2b-256 279bdc8952dfc6ce6242fba036a042b0164066b8426319fc7acb8da9907ca3cc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: teft_leads-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 65.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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e817ec7892045ec7ec29556f3be0ed86aed53927b74e0a7b97f660df5a238e6e
MD5 66fa914700af30da461d1a59ffd6df4b
BLAKE2b-256 26741154b71d3a3603ceefe94a0f182695943825b5a6fc923854721b2e21d5e4

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