Skip to main content

Turn recorded conversations into structured insights. Local transcription + AI extraction.

Project description

Foresight

PyPI version License GitHub stars

Turn recorded conversations into structured insights. Automatically.

Drop an audio file in a folder. Get back a searchable transcript and an AI-extracted summary with key themes, quotes, and follow-up questions.

100% local. No API costs. No data leaves your machine.


The Problem

You record important conversations—interviews, user research calls, sales demos, meetings. Then the audio sits there because:

  • Transcription services cost money and take time
  • Reading a full transcript is tedious
  • The insights you need are buried in 45 minutes of audio
  • Organizing files manually is a chore

The Solution

Audio file drops in folder
         ↓
   [3-5 minutes]
         ↓
Transcript.md + Insights.md
         ↓
Original archived automatically

What you get:

Output Contents
Transcript Full searchable text, YAML metadata, word count
Insights Pain points, objections, decision criteria, key quotes, follow-up questions, executive summary

Use Cases

  • User Research — Extract patterns from customer interviews
  • Sales Calls — Capture objections and buying signals
  • Podcasters — Generate show notes and quotable moments
  • Journalists — Transcribe interviews with structured highlights
  • Founders — Process investor/customer conversations at scale
  • Consultants — Document client discovery sessions
  • Academics — Transcribe and analyze qualitative research

Install

pip install foresight-transcribe

That's it. Or install from source:

git clone https://github.com/dnoma/foresight.git
cd foresight
pip install -e .

Setup Ollama (required for insights)

# Install Ollama
brew install ollama   # macOS
# or: curl -fsSL https://ollama.ai/install.sh | sh  # Linux

# Start and pull model (~4GB)
ollama serve &
ollama pull mistral

Verify installation

foresight --test

Usage

Watch Mode (recommended)

Leave it running. Drop files in the folder, they process automatically.

foresight --watch

Single File

Process one recording right now.

foresight --file meeting.m4a

Batch Mode

Have a backlog? Process everything at once.

foresight --batch

What the Output Looks Like

Transcript

---
filename: customer-call-jan-11.m4a
duration: 34:22
word_count: 4521
model: whisper-medium
---

# Transcript: customer-call-jan-11

The full conversation, searchable and quotable...

Insights

## PAIN POINTS
- Manual invoice processing takes 3 days each month
- No visibility into supplier risk until problems occur

## DECISION CRITERIA
- Must integrate with existing SAP system
- Needs to show ROI within 90 days

## KEY QUOTES
- "We've been burned twice by suppliers going bankrupt with no warning"

## FOLLOW-UP QUESTIONS
- What's the current approval workflow for new suppliers?
- Who else is involved in the vendor selection process?

## EXECUTIVE SUMMARY
[2-3 sentence summary of the entire conversation]

Directory Structure

Auto-created on first run:

~/klavis-interviews/
├── raw/           ← Drop recordings here
├── transcripts/   ← Whisper output
├── insights/      ← LLM-extracted analysis
├── archive/       ← Processed originals
└── processing.log

Configuration

Edit the config in interview_processor.py (or after install: ~/.local/lib/python*/site-packages/interview_processor.py):

WHISPER_MODEL = "medium"    # tiny|base|small|medium|large
OLLAMA_MODEL = "mistral"    # or phi3, llama3, etc.
MIN_FILE_SIZE = 100000      # Skip files under 100KB

Customize the extraction prompt

The EXTRACTION_PROMPT variable controls what the LLM extracts. Modify it for your use case:

# For sales calls
EXTRACTION_PROMPT = """Extract: objections raised, competitor mentions,
next steps agreed, budget signals..."""

# For user research
EXTRACTION_PROMPT = """Extract: user goals, frustrations,
current workflow, feature requests..."""

Options

Flag Description
-m, --model Whisper model size (default: medium)
--skip-insights Transcribe only, skip LLM extraction
--keep-original Don't move to archive after processing
--dry-run Preview what would be processed
--status Show pending files and system health
--retry-failed Retry previously failed files
--test Verify installation works

System Requirements

  • macOS (tested) or Linux
  • ~6-7GB RAM during processing (models load/unload automatically)
  • Python 3.9+
  • ~5GB disk for models (one-time download)

Processing Time

Audio Length Time (M1 Mac)
5 min ~45 sec
30 min ~3 min
60 min ~6 min

Why Local?

Local (this tool) Cloud APIs
Cost Free $0.006/min+
Privacy Data stays on device Uploaded to servers
Speed No upload/download Network dependent
Availability Works offline Requires internet

A 1-hour recording costs ~$0.36 on cloud transcription. Process 100 interviews and you've saved $36—plus your data never left your laptop.


Supported Formats

.m4a .mp3 .wav .mp4

Files under 100KB are skipped (filters out accidental recordings).


Troubleshooting

Ollama not running?

ollama serve        # Start the server
ollama ps           # Check if model is loaded

Transcription too slow?

foresight --file audio.m4a --model small

Check system status:

foresight --status

License

MIT


Contributing

PRs welcome. Ideas:

  • Speaker diarization (who said what)
  • Custom prompt templates via config file
  • Web UI for reviewing insights
  • Export to Notion/Obsidian
  • Slack/Discord notifications when processing completes

Support

If this saved you time or money, consider giving it a star. It helps others discover the project.

Star this repo

Built by @dnoma — indie dev building tools that save time.

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

foresight_transcribe-0.1.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

foresight_transcribe-0.1.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: foresight_transcribe-0.1.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for foresight_transcribe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5422b273818651e39016680ae57d435c154354c74a8e340edd1019847f8283d4
MD5 12886db142486db01b5611cf72d6ee6d
BLAKE2b-256 f0c0b82ae5efd3d2ae7d8286e0a045d930b37918f90fa081b3955f73105603e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for foresight_transcribe-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32408fe66115b65ec7e64447458a82c6f2ea02c8ada3a924dcefb5bc117a76f2
MD5 1b53f50f89825940de80416761683526
BLAKE2b-256 0122ab659e0fa3b2271ad3dddec7c3254d8f584cc67a5a0151a8ef63835e103a

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