MarkItDown is a Python library and CLI tool that converts a wide variety of file formats (PDF, DOCX, PPTX, XLSX, HTML, CSV, JSON, EPUB, Outlook MSG, images, audio, YouTube, RSS, IPYNB, ZIP, and more) into Markdown. Its primary production use is preparing documents for LLM ingestion, agent workflows, and text analysis pipelines. The architecture is a monorepo containing the core `markitdown` package, an OCR extension (`markitdown-ocr`) that uses LLM Vision for image text extraction, an MCP server (`markitdown-mcp`) exposing conversion as a tool for AI agents, and a sample plugin for third-party converters. The core library uses a plugin system based on `importlib.metadata.entry_points` to register converters, each implementing a `DocumentConverter` base class with `accepts()`/`convert()` methods and a priority-based dispatch. The main entry points are the `MarkItDown` class (Python API), the `markitdown` CLI, and the MCP server's `convert_to_markdown` tool. Data flows from local files, streams, HTTP responses, or URIs through converter selection (by MIME type, extension, or content inspection) to produce Markdown output. External dependencies include many optional format-specific libraries (pdfminer.six, python-docx, python-pptx, openpyxl, etc.), external binaries (exiftool, ffmpeg), cloud APIs (Azure Document Intelligence, Azure Content Understanding), and an OpenAI-compatible LLM client for image captioning and OCR.
Jimmy is a command-line and terminal UI tool for converting notes from 50+ note-taking applications (Evernote, Obsidian, Joplin, Notion, Bear, etc.) into a unified Markdown format. It uses an intermediate representation (Notebook/Note/Resource/Tag objects) decoupled from input parsing and output writing, allowing clean extensibility. The architecture is a plugin-style converter framework with a rich set of format-specific parsers, markdown preprocessing libraries, and a resource deduplication system. The tool is distributed as standalone binaries bundling Pandoc and other dependencies. While the core abstractions are well-crafted, the vast majority of the codebase consists of tightly coupled format converters that are specific to each app's export schema, limiting general reuse. The project has extensive integration tests via a test data submodule, but many converters lack unit tests. Its requirement for Python 3.14 (a very recent version) and reliance on external binaries (Pandoc, one2html) introduce drift risks.
This repository is a SharePoint Framework (SPFx) web part and companion pattern library that delivers Microsoft 365 Learning Pathways — a customizable training portal for Office 365. The application fetches structured JSON playlists and asset metadata from a public CDN (pnp.github.io), caches it client-side, and renders it through React components. Users can customize playlists and assets, with changes persisted to SharePoint lists via a custom data service. An UpgradeService migrates cached configuration and playlist data between major versions using version-specific migration functions (e.g., uCacheConfigV2V3, uPlaylistsV3V4). The repo also contains a style guide with atomic design (atoms/molecules/organisms/pages) and a dependency graph for template impact analysis. Although the dominant character is application, the repository is hybrid: it also stores a large static dataset of official Microsoft training content (playlists, assets, locale files) and a design-system data layer, so it is as much a content portal as a codebase. Maintenance is active but shows technical debt: duplicated locale lists, content drift between en-us and zh-cn asset files, disabled ESLint rules, and fragile cheerio-based CI scraping scripts.