{"id":13497007,"url":"https://github.com/blankenshipz/clerk","last_synced_at":"2025-03-28T21:31:57.472Z","repository":{"id":185248054,"uuid":"618193833","full_name":"blankenshipz/clerk","owner":"blankenshipz","description":"LLM based file organizer","archived":false,"fork":false,"pushed_at":"2023-03-24T00:28:05.000Z","size":16,"stargazers_count":21,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-31T13:34:10.591Z","etag":null,"topics":["chat-gpt","gpt-3","gpt-4","llm","llms","organizer","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blankenshipz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-24T00:15:02.000Z","updated_at":"2024-10-26T09:29:33.000Z","dependencies_parsed_at":"2023-08-01T09:02:14.233Z","dependency_job_id":null,"html_url":"https://github.com/blankenshipz/clerk","commit_stats":null,"previous_names":["blankenshipz/clerk"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blankenshipz%2Fclerk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blankenshipz%2Fclerk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blankenshipz%2Fclerk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blankenshipz%2Fclerk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blankenshipz","download_url":"https://codeload.github.com/blankenshipz/clerk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246105199,"owners_count":20724267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat-gpt","gpt-3","gpt-4","llm","llms","organizer","rust","rust-lang"],"created_at":"2024-07-31T20:00:20.801Z","updated_at":"2025-03-28T21:31:57.187Z","avatar_url":"https://github.com/blankenshipz.png","language":"Rust","funding_links":[],"categories":["Projects","Rust","Applications"],"sub_categories":[],"readme":"[#](#) Clerk\n\n## Usecase\n\nYou have a large amount of poorly organized files that fall into a set number of tags or categories\nand you want to automate the process of associating with those tags so they can be better organized.\n\n## About\n\nClerk uses LLMs to magically provide context about your files!\n\nClerk works on the current directory and requires a YAML config. The default name for this\nfile is `clerk.yml` and it is expected in the working directory.\n\n### Example Config:\n\n```clerk.yml\ncategories:\n  genre:\n     - autobiography\n     - fantasy\n     - historical fiction\n     - non fiction\n     - romance\n     - science fiction\n```\n\n### How's the LLM magic sprinkled on top?\n\nFor each file recursively walking down from the current working directory we construct a prompt\nfor the LLM asking it to attribute one of each of the category values to the file based on the name\nof the file and some of the content of the file.\n\n* The LLM has a hard limit on the number of tokens; this impacts how many categories and how much file content can be sent as part of the prompt.\n\nThe amount of file content sent as part of the prompt can be increased or decreased. If you decrease it \nyou'll have more room for category values in the prompt. If you increase it you _may_ have more accuracy.\n\n### Output\n\nCurrently clerk outputs a JSON line for each file with the path to the file, and a key, value for each category and the prediction for the category value\nfrom the LLM\n\n```\n{ \"path\": \"/some/long/path/book1.pdf\", \"genre\": \"fiction\" }\n{ \"path\": \"/some/long/path/book2_2022-01-03-harry-potter.pdf\", \"genre\": \"fiction\" }\n```\n\n## Currently Supported File Types\n\n* Text\n* PDF\n\n## Usage\n\nCurrently clerk only supports the OpenAI GPT-4 model; you'll have to and\nto that model and an API key in the environment variable `OPENAI_API_KEY`\n\n```\nUsage: clerk [OPTIONS]\n\nOptions:\n  -m, --max-read-length \u003cMAX_READ_LENGTH\u003e\n          Maximum length of content to read from files for matching [default: 10000]\n  -e, --exclude-file-type \u003cEXCLUDE_FILE_TYPE\u003e\n          Excluded File Type [default: zip xlsx yml]\n  -c, --config-file \u003cCONFIG_FILE\u003e\n          Location of Configuration file that defines file categories [default: clerk.yml]\n  -h, --help\n          Print help\n  -V, --version\n          Print version\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblankenshipz%2Fclerk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblankenshipz%2Fclerk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblankenshipz%2Fclerk/lists"}