phone+net+tics · let your phone talk to you
(phone + net + I.C.K.S.)
Your phone already heard it all: the calls, the meetings, the promises. Plug it in and let it talk back, as an indexed, checksummed, searchable account of what was said, asked and answered, on hardware you own.
v0.7.6 · 2026-10-18 full analytics → workflow → sessions of therapy →Why it exists
Family caregivers juggle calls, visits, emails, portals and letters across offices that don't talk to each other. When something doesn't add up, the answer is usually already somewhere in your own phone. It's just scattered. phone-net pulls it into one timeline you can search, so you can ask clear questions in writing.
The four stages
Pull only what's new over USB-C, diff against earlier backups, verify every file.
Checksums on every copy and output. True recording dates recovered from the audio itself.
Level, transcribe, separate speakers, then keyword and meaning search across everything.
Dated index, honest summaries, and packets for family, care team, advocate or counsel.
First run
Aggregate counts only. No names, no content.
Same unit on one scale: hours per day, monthly averages. "Notes span" = first to last note of the day (when the caregiver was active). "Logged in the payroll app" and "paid cap" come from the payroll company's own shift-status exports (535 service days). From Dec 2025 the logged hours fall to about the cap: entries were limited to what would be paid. Sep 2026: 6.5 promised, 5.25 sent to payroll.
| Month | Notes | Avg notes span (h/day) | Approved (h/day) |
|---|
Active time in AI sessions about caregiving (10-minute windows with a message), from the session index. A conservative floor: only sessions whose opening message is about caregiving are counted. The GPU's own hours (about 22 h of heavy use Sept 25–29, plus about 17 h of job time in the last day) are the computer's work, not the caregiver's, and are listed separately. Whether any admin time is payable depends on the care plan.
Distinct incident days from the caregiver's own log and recordings, not every time it was talked about. Not a medical record.
Above the line: sent by the family. Below: received. Care plan 19 sent · 13 received. Payroll 14 sent · 18 received. Social worker 14 sent · 7 received: contacted out of necessity, when the proper channels gave no solution for the care receiver's needs.
Why caregivers get lost
Company A sets the care plan. Company B runs payroll. The caregiver calls both. Each points at the other, and the person receiving care has to fight just to let the caregiver speak for her.
What we learned doing it
Worked out the hard way, by a family caregiver, on very little sleep.
Rules it runs on
What the notes are about
Keyword categories from 18,797 notes (a note can fall in more than one). Bubble area = count. Named people and places are grouped as "local contacts."
Breakthroughs
Built between care tasks with several AI assistants. Citations are commit IDs and session IDs from the owner's private records; they are listed so each step can be traced, not as public links. Sources were checked against three records (session index, Grok export, chat-history import); the session index had filed early grok.com chats as ChatGPT, and these entries use the corrected source.
a368cd55 (first build question: a Dockerfile) · AI/ML certificate acceptance, same night7dc00839 (catalog naming, 00:01) · commit ee882c1 (00:52; coding agent not recorded)da4ceec · session codex:019f88b53ba0ddb · commit e6ede46 · session codex:019fcd1fde6860f · session codex:019ff9023bc62e6 · commit db1f3f9 · session f85d6f3f0452ae7 · commit b1833c4 · session 6985c5c016384fb · commit aa50d77 · commit 440372c · commit 518453f · session 14aa5ea28cb1dae · commit 86170fe · session 93ba0bae52bdff7f913b9b2 · device audit 2026-09-29 17:41 · session 52bdff7f0d5bb44 · session 9cf494a3 (resident GPU worker: session 875a33cc)
session index, 2026-10-02 18:43 and 18:47: “can any jobs run concurrently like overnight?” · “on large- run smaller model to get context to discern if second better pass is required”28e2275 · session 9cf494a3
session index, 2026-10-02 22:58: “can job board have a watch directory already established where the new pulls drop to?”684338f · ea88b17 · de0298e · session 635a3008.lbf file) was the only copy of an old work phone. Only its small index is scrambled; the rest is a stream of ordinary compressed entries with their original phone paths and dates. A short open script reads them in order, hashes every entry into a manifest and pulls out the databases and recordings. The original is hashed on the storage server, copied, and hashed again before anything is read. Old music and video project files gave original save times the same way, which dated a recording session to the hour.
scripts/lbf_extract.py (this repo) · session 635a30083d0052d1 · local model only (PHI rule)3d0052d13d0052d1By the numbers · v0.7.5 · updated 2026-10-16
Totals from Jan 2024 to Oct 16, 2026. Counts only: no names, no content, no medical detail.
adb, pull only what's new. Phones used: a 2024 Moto G Play, two 2023 Moto G Stylus, a 2018 LG V35, plus their SD cards.Planned: an official records export (or records request) from the care receiver's online records portal, to line trips up with hours. Screen automation (scrcpy) only as a last resort.
Source types only. The private key (with file names and hashes) stays with the owner.
Keyword lists from the key meetings → the owner's own filename tags → meaning search → same-day cross-checks (notes, calendar, email, trips) → read every lead in context before calling it strong.
The first full pass (about 750 hours of audio, 2,461 recordings) took roughly a week of evenings and overnights on one 16 GB GPU. The deep sweep (voiceprints, beam-10, QC flags) has finished 60 recordings. 1,664 more (about 350 hours of audio) are staged in the queues: about 320 GPU hours, or 4 to 5 weeks of evenings and overnights at one job at a time. A many-core CPU lane now takes the urgent one-off transcripts so the GPU queue keeps moving.
On-device models: Whisper large-v3 via faster-whisper and WhisperX (word timing with wav2vec2) · pyannote speaker-diarization-community-1 (Hugging Face, gated: accept terms) · whisper.cpp with ggml small.en (q5_1) for the quick first pass on long files (on the Mac's GPU, about 10 s per 15 minutes of audio) · Gemma summaries and nomic-embed-text-v2-moe search, both served by Ollama · model gateway LiteLLM
Tools: adb · FFmpeg · rclone · Tesseract OCR · scrcpy (planned) · account export · Hister (browser-history search) · untrunc (rebuilds cut-off phone recordings, run in a container)
AI assistants and CLI agents used to build it: Claude Code · Claude · Grok · ChatGPT · Codex CLI · OpenCode · Pi coding agent · Cowork, with session history from an AgentsView index.
Done (v0.5.6–v0.5.10): two computers working at once — the GPU host does the deep pass (large transcription model, speaker separation) while the Mac cuts long recordings into pieces, checks for silence and runs a quick small-model pass that decides which pieces need the deep pass; every phone pull is checked by hash, and damaged recordings go through a recovery step first.
Roadmap (earmarked): next, move audio leveling and the silence check fully to the Mac, and let it transcribe short items itself when the GPU is busy.
Also earmarked: a fast first hash (xxHash XXH128) at every copy hop for quick transfer checks,
with SHA-256 still taken once at the first pull as the custody hash. Details: docs/EARMARK_DUAL_HOST_FAST_HASH.md.
Case audio and transcripts were processed only by the on-device models above, never sent to the cloud assistants.
Job board, in the open · v0.6.0
The job board is a small local web page. It shows every queue, every runner and every report, so the owner can see what the tools did and what still needs a person.
Handoffs
The tools do the finding and the marking. People decide what to send and where. No names, agencies or case details here.
Context · self-directed services (SDS)
In self-directed Medicaid long-term care, a person can hire their own caregiver, often a family member. The work runs through several separate organizations, and each keeps its own part of the record. This page names none of them; it describes roles only.
The person receiving care. In the fiscal/employer agent model, the member is the legal employer of their caregiver.
Its care team assesses needs and authorizes services and hours. In Wisconsin Family Care, self-directed supports is an option inside that plan.
A financial management services provider that runs payroll, tax filing and timesheets for the member-employer, paid from the budget the MCO authorizes.
Handles eligibility and any monthly cost share, on its own records and its own appeal route.
Does the work and logs the hours, often in the payroll app, and ends up the only one holding all the pieces, mostly on their own phone.
There is often no shared system joining these records. The caregiver's own dated, checksummed copy lets each written question name exactly which piece is missing, and from whom.
Official sources: Medicaid.gov: Self-Directed Services · Wisconsin DHS: Self-Directed Supports FAQ (P-00088N) · Wisconsin DHS: Self-Directed Supports in Family Care (P-00593) · Wisconsin DHS: IRIS (Include, Respect, I Self-Direct) · Wisconsin DHS: member rights, grievances and appeals
The larger µlab · M.A.N.A.G.E.R. LLC
phone+net+tics is one door. These are the others, all public and MIT-licensed, all built the same way: local first, with AI coding assistants writing the code.
Home LLM gateway: route models across machines, keep chat and tools portable. The local gateway these pages refer to.
repopageTwo spare NVMe drives turned into one fast, deduped storage pool for local models.
repopageJohnny Appleseed + C.H.I.P.P.E.R.S. + C.H.A.I.N.S.: artifact manifests and custody receipts.
repopagePrepare-only ADA/WCAG-style document triage (a first pass, not certification).
repoLocal-first home food bank: stock locations, recipe match, tank-rank.
repo