{"adoption": {"forks": 113, "observed_at": "2026-08-28T04:05:34.726142+00:00", "stars": 1777}, "canonical_url": "https://ross.abutalabs.com/products/stephenafamo-bob", "card": {"archived": false, "artifact_type": "library", "description": "SQL query builder and ORM/Factory generator for Go with support for PostgreSQL, MySQL and SQLite", "domain": ["databases", "backend", "developer-tools"], "enriched": true, "function": ["orm", "database", "database-driver"], "health_score": 99, "homepage": "https://bob.stephenafamo.com", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["stephenafamo/bob"], "name": "stephenafamo/bob", "platform": ["go", "windows", "cross-platform"], "pushed_at": "2026-08-17T12:38:33+00:00", "repo": "stephenafamo/bob", "stars": 1777, "tags": ["query-builder", "sql", "postgresql", "mysql", "sqlite", "code-generation", "database-first", "sqlc-alternative", "factory-pattern", "linux", "macos"], "topics": ["golang", "mysql", "query-builder", "sql", "postgres", "postgresql", "psql", "sqlite", "sqlite3", "database", "hacktoberfest", "orm"], "urls": [], "use_cases": ["build type-safe SQL queries in Go without an ORM", "generate Go models and factories from an existing database schema", "replace GORM or SQLBoiler with a database-first ORM", "generate typed code for hand-written SQL queries like sqlc", "write dialect-specific queries for Postgres, MySQL, or SQLite", "eager-load related models based on foreign keys", "generate test fixtures for database-backed Go code"], "what_it_is": "Bob is a Go SQL access toolkit providing a fluent, dialect-aware query builder for PostgreSQL, MySQL, and SQLite, plus a database-first ORM with code generation of typed models, factories, and sqlc-style query code. It emphasizes progressive enhancement from raw SQL strings to fully typed queries.", "when_to_avoid": ["you want a migration tool to create your schema (Bob expects the schema to already exist)", "you prefer a code-first ORM that defines models in Go", "your project does not use PostgreSQL, MySQL, or SQLite"], "when_to_choose": ["you prefer a database-first workflow with schema-driven code generation", "you want progressive adoption from raw SQL to typed models", "you need strong typing and full autocomplete for queries", "you want sqlc-like query codegen plus ORM features in one toolkit"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/stephenafamo-bob", "repo": "stephenafamo/bob", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.726142+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:25:14.362303+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "13b795ef017625c745b617bd2a76e7c773e14edfcf7f1f14836e97d9b752ff21", "fetched_at": "2026-08-28T04:05:34.726142+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stephenafamo/bob"}, {"content_hash": "a25e114229bc29eabda80cf05c243b171aa5965a44fc633d3a05a9a40e6343f6", "fetched_at": "2026-08-29T11:03:39.972056+00:00", "kind": "homepage", "missing": false, "url": "https://bob.stephenafamo.com"}, {"content_hash": "7036fe702b4debc69c908a47b769db53e00756133674fd8e001e1b9247329a2e", "fetched_at": "2026-08-29T11:03:39.981247+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/intro"}, {"content_hash": "e0b0cbbf952b686ac2de4f5bed40543c17fba467c3af7881c3d7d573b70a4eeb", "fetched_at": "2026-08-29T11:03:39.983259+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/psql/how-to-use"}, {"content_hash": "f8d87532b9745b2d44755f250384d91b4da0b97c46c524a042015f6387fcbda3", "fetched_at": "2026-08-29T11:03:39.985004+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/mysql/how-to-use"}, {"content_hash": "1377aa0f47f60804f1fda7e5aca6b64b48a233f7e3050e090ccddd84c6f13f8c", "fetched_at": "2026-08-29T11:03:39.986549+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/query-builder/sqlite/how-to-use"}, {"content_hash": "7dcf50c1976d26b9be29602ff72f09e8c0f4ddd63e94609e116c31f4c5c41961", "fetched_at": "2026-08-29T11:03:39.987991+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/intro"}, {"content_hash": "4c4dc12d2458730709adb18d80b0336c64df6f44e79c3de57016a746e4b09c3b", "fetched_at": "2026-08-29T11:03:39.989884+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/configuration"}, {"content_hash": "50e2eac59791a05a66a10f135feeb78029a7303e76af2cd81fdfe611f6b7bfd1", "fetched_at": "2026-08-29T11:03:40.002099+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/psql"}, {"content_hash": "b4a13d9dc678272e847aa433baae410f9a2e800a0cc3f64447d5e81da1ecd576", "fetched_at": "2026-08-29T11:03:40.004442+00:00", "kind": "site_page", "missing": false, "url": "https://bob.stephenafamo.com/docs/code-generation/mysql"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1596, "days_push": 16, "days_rel": 23, "gap_med": 6, "n_releases_24m": 30}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}