Skip to content

AlexTavor/rapport

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rapport

Analyzes a one-to-one chat history (a WhatsApp or Telegram export) and serves a local dashboard: the relationship's arc over time, initiation / reach-back / reply-latency asymmetry, distinctive vs. shared vocabulary, turning points, and an optional local-LLM narrative. A portfolio view compares several relationships.

Runs entirely locally — the analysis path makes no network calls; the only model is a local Ollama instance at localhost.

Install

uv sync

Use

# build a DB from an export (a WhatsApp _chat.txt, or a Telegram HTML export dir)
uv run python scripts/build_conv.py path/to/export rel.duckdb --self "Your Name"

# per-relationship dashboard (localhost)
uv run python -m rapport.serve rel.duckdb 8079

# compare relationships (globs *.duckdb in the cwd)
uv run python -m rapport.portfolio serve 8083

# optional: local-LLM narrative (needs Ollama + a model)
uv run python -m rapport.narrate rel.duckdb

# optional: preview a redacted, pseudonymized export slice (writes nothing without --out)
uv run python -m rapport.bundle rel.duckdb --all --allow-full

Notes

  • Analysis is pure SQL over DuckDB; no model in that path.
  • Each import records a capability profile (reactions, edits, reply-links, timezone, self-identity); a metric whose required capability is absent is disabled, not zero-filled.
  • Reply latency is send-to-send (exports carry no read receipts); no message after a date is not treated as "ended".

Python · uv · DuckDB · Ollama (optional).

License

MIT — see LICENSE.

About

Local-only analysis and graphing of relationships from text chat dumps.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages