I forgot my girlfriend's favourite flower two days before our anniversary. Rather than ask her and ruin it, I spent a weekend writing a parser. That was a while ago and the parser turned into this....

I forgot my girlfriend's favourite flower two days before our anniversary. Rather than ask her and ruin it, I spent a weekend writing a parser. That was a while ago and the parser turned into this. What it does. You drop in a WhatsApp export. It gives you back one page of things she has told you about herself: preferences, dates that matter, sizes, things she said she wanted, allergies, places, the words only the two of you use. Every single line carries her actual sentence and the month she sent it, so you can check any of it against the chat yourself. The part I found hard, and the part I would want to read about. Getting a model to produce nice sounding facts is trivial and useless, because it will happily invent a quote that sounds exactly like something she would say. So the model's output is not trusted. Every quote gets checked against the actual chat text before the fact is allowed onto the page, and a fact whose quote cannot be found gets dropped. On my last full run that was 77 quotes checked and 0 fabricated, and the reason I can tell you that number is that failing the check is a code path rather than a hope. There is a second, sneakier version of the same problem. Some facts are claims about absence: "she said she wanted this and it never happened." A language model cannot honestly make that claim, because it only saw the passages it was given, not the whole chat. So those come from a separate pass on your device that checks the whole corpus for fulfilment, and the model is not allowed to assert absence at all. Privacy, since it is the obvious question. The chat is parsed in your browser. Phone numbers, cards, UPI IDs, emails, links, Aadhaar and PAN are stripped before anything leaves the tab, and it tells you exactly how many of each it removed, computed on your own file. On my test chat that was 7 phone numbers, 7 payment handles, 7 ID numbers, 4 links, 3 emails and 3 card numbers. Only selected passages plus an aggregate summary ever go anywhere. The Content Security Policy is connect-src 'self' , which means the browser itself will refuse to let anything POST your transcript to another host. Open the network tab and check me. Names are deliberately not scrubbed, because a quote with her name removed is not a receipt any more. What's rough. - It needs a long chat. Under about a year there is nothing forgotten in there yet. - The paid report runs on a model behind a tunnel to a machine I own, which is fine for now and obviously not fine at any volume. - There is no second use. You run it, you read it, you are done. I have not solved that and I am not sure it is solvable. - It is one shot per export, so if the report is thin, the chat was thin. What I would like feedback on: whether you would actually upload the chat. That is the whole question and I genuinely do not know the answer.

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论