{"id":305,"date":"2025-04-14T05:29:34","date_gmt":"2025-04-14T05:29:34","guid":{"rendered":"https:\/\/blog.adlington.fr\/index.php\/2025\/04\/14\/stevens-a-hackable-ai-assistant-using-a-single-sqlite-table-and-a-handful-of-cron-jobs\/"},"modified":"2025-04-14T05:29:34","modified_gmt":"2025-04-14T05:29:34","slug":"stevens-a-hackable-ai-assistant-using-a-single-sqlite-table-and-a-handful-of-cron-jobs","status":"publish","type":"post","link":"https:\/\/blog.adlington.fr\/index.php\/2025\/04\/14\/stevens-a-hackable-ai-assistant-using-a-single-sqlite-table-and-a-handful-of-cron-jobs\/","title":{"rendered":"Stevens: a hackable AI assistant using a single SQLite table and a handful of cron jobs"},"content":{"rendered":"<blockquote><p>The design is refreshingly simple considering how much it can do. Everything works around a single memories table. A memory has text, tags, creation metadata and an optional date for things like calendar entries and weather reports.<br \/>\n\u2014 Read on <a href=\"https:\/\/simonwillison.net\/2025\/Apr\/13\/stevens\/\">simonwillison.net\/2025\/Apr\/13\/stevens\/<\/a><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>The design is refreshingly simple considering how much it can do. Everything works around a single memories table. A memory has text, tags, creation metadata and an optional date for things like calendar entries and weather reports. \u2014 Read on simonwillison.net\/2025\/Apr\/13\/stevens\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-305","post","type-post","status-publish","format-standard","hentry","category-blog"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts\/305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/comments?post=305"}],"version-history":[{"count":0,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/posts\/305\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/media?parent=305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/categories?post=305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.adlington.fr\/index.php\/wp-json\/wp\/v2\/tags?post=305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}