A local-first relationship memory desk for thoughtful follow-ups.
Project description
Kindred Keeper
Kindred Keeper is a private, local-first relationship memory desk for thoughtful follow-ups. Add people you care about, jot down small details after calls or visits, and it builds a practical plan for check-ins, promises, birthdays, and meaningful moments.
Everything runs on your computer with the Python standard library. There is no account, upload, telemetry, or hosted database.
Features
- Local browser app backed by a JSON file on your machine.
- Contact profiles with relationship, cadence, interests, and last touchpoint.
- Note analysis that extracts interests, promises, dates, sentiment, and relationship signals.
- Lightweight local classifier trained on celebration, support, commitment, and interest examples.
- Planning workflow that ranks overdue follow-ups, open commitments, and upcoming dates.
- Suggested message drafts that stay specific to the person and the reason for reaching out.
- Copy-ready weekly relationship plan.
- Seeded demo workspace so the full workflow is visible on first launch.
Installation
Requirements:
- Python 3.10 or newer
git clone https://github.com/iwaheedsattar/kindred-keeper.git
cd kindred-keeper
python3 app.py
Open http://127.0.0.1:8768.
To use a custom local data file:
python3 app.py --data ./my-kindred-data.json
Example Usage
- Launch the app with
python3 app.py. - Review the seeded relationship plan.
- Add a person you want to stay close to.
- Save a note such as:
Lina loves Korean food and ceramics. Promised to send the podcast link. Her recital is Jul 16.
- Review the follow-up plan and copy the weekly plan into your calendar or notes app.
How It Works
Kindred Keeper uses a small local planning pipeline:
- Notes are tokenized and scored with a compact multinomial classifier.
- Extractors find promises, dates, and interest phrases.
- Each contact receives warmth and attention scores based on cadence, open commitments, support signals, and recent notes.
- The planner ranks next actions and writes a short message draft for each one.
The pipeline is intentionally small and transparent so personal relationship notes stay local and understandable.
Development
python3 -m unittest discover -s tests
python3 app.py --no-open --data ./.kindred-keeper-data.json
Package build:
python3 -m build --no-isolation
Project Layout
kindred_keeper/engine.pycontains note analysis, scoring, and planning.kindred_keeper/storage.pymanages the local JSON workspace.kindred_keeper/server.pyserves the local web app and JSON API.static/contains the browser UI.tests/covers extraction, summary scoring, and action planning.
Roadmap
- Calendar export for planned check-ins.
- Import from a simple contacts CSV.
- Reminder notifications in a desktop wrapper.
- Optional encrypted data file.
- Better recurring-date handling for birthdays and anniversaries.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kindred_keeper-0.1.0.tar.gz.
File metadata
- Download URL: kindred_keeper-0.1.0.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22d07ea67db662d0592248bd7c724a282a104c1b3ae359407a9d89461f63af97
|
|
| MD5 |
9624d6fa915e797054ae621659de6478
|
|
| BLAKE2b-256 |
ca907325f91f2a4a2b4c4d9e64545ec096c2d4bf8ba7cd20416e150c1fbab162
|
File details
Details for the file kindred_keeper-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kindred_keeper-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36278b1c91a781d713f15ff00bc0b156ea84d88830df54d067500501198f505b
|
|
| MD5 |
9321cbe80c22a3ea929a92b6940d1f05
|
|
| BLAKE2b-256 |
531cca132cdc57f7c09032b253931062b563452ecd8bca2be91fd3ed0e91526c
|