{"id":"ae26db32-60de-446c-b06d-034920124784","task":"Build a course catalog browsing API aggregating data from multiple providers","domain":"education-general","steps":["Define a normalized course schema with canonical fields: course_id, provider, title, description, subject_area, level, duration_hours, language, url, and availability_status","For each provider (e.g., internal LMS, Open edX, external catalog), write an adapter that calls the provider's API and maps its response fields to your canonical schema","Cache provider responses with a TTL appropriate to how frequently the provider's catalog changes (e.g., 1-24 hours), using the provider's last_modified or updated_at field where available to do conditional fetches","Expose a unified search endpoint that accepts query parameters (keyword, subject, level, language) and fans out to all adapters, merging and deduplicating results by URL or course_id before returning","Include a provider_metadata field in each result object to surface provider-specific data that does not fit the canonical schema without breaking consumers"],"gotchas":["Provider APIs have different rate limits and SLAs; a single slow or rate-limited provider should not block the entire catalog response — implement per-provider timeouts and return partial results with an error flag for timed-out providers","Course availability can change between catalog fetch and user enrollment attempt; always re-verify availability at enrollment time rather than relying solely on cached catalog data","Deduplication across providers is non-trivial; the same course (e.g., a MOOC cross-listed on multiple platforms) will have different IDs and slightly different metadata on each platform — use URL canonicalization or ISBN/course-code matching as a secondary key"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:23.292Z"},"url":"https://mcp.waymark.network/r/ae26db32-60de-446c-b06d-034920124784"}