Visitar URL original
crewAI course: problems found in specs and builds (v2.6–v2.8) · Issue #97 · https-deeplearning-ai/spec-build-lab · GitHub
Skip to content

crewAI course: problems found in specs and builds (v2.6–v2.8) #97

Open

Description

@Carr1005

Problems found in the crewAI course's specs and builds (2026-10-27/28): specs #86 (v2.6), #90 (v2.7), #94 and #96 (v2.8), 8 + 8 + 6 + 3 test generations, and five clean-room builds (v2.6 pinned, v2.7 probe, v2.7, v2.8 recommended, v2.8 own job). Each item says whether it is a guide question, a spec-test gap, or a framework fact.

1. Tests pin behaviour the current framework does not have (guide)

The spec turns things the course left to the framework into exact test contracts, invented "so behaviour is testable and the same across frameworks" (#96, D9): a 15-step limit that forces an answer, exact error strings (Tool error: no coworker with role <role>), tools with "one text argument", results passed on "each labelled with the task name", a run-wide cache. Current crewAI (1.15) does these differently, so every builder replaced crewAI's executor loop, delegation, cache and context passing, and subclassed private methods (Crew._get_context, Task._execute_core). The "use current releases" rule (4.7) and "names that go stale" cover names and versions, not behaviour. Effects: the build is mostly custom code around crewAI; it can break on the next crewAI release; two builds differ. Direction: test what the pattern guarantees and leave framework-controlled details to the current framework, recorded by the build agent (like 4.6 does for models).

2. "Don't make up information" is not tested (spec tests)

Every real run adds unsupported résumé claims (e.g. "Designed and implemented backend API functionality", "Relational data modeling"). The spec checks only the instruction text (T16); builders added their own live checks, which cover employers and named skills only. The spec's own scripted résumé lists a skill taken from the code profile, so "facts" are undefined. In the pinned v2.6 build the résumé invented Docker and dropped the employers (fixed by current releases).

3. Parts from other lessons become questions (guide 3.3)

Most generations ask "pause for your feedback" and "JSON output" (Lesson 12), which are not on the card's "Offered from other lessons" (memory, reviewer only); #86 kept them as notes. Cause: 3.3 also admits a part that "changes one of the stages". Some runs add more: framework choice, notifications, "stop the run when a tool fails" (the course says not to), a hand-made manager. Question counts range 9–17.

4. Tools under 4.4 (guide)

A course tool that only needs the key the build already has (résumé search): 9 of 10 kept it, 1 left it out under 4.4's tool bullet ("a heavy tool ... otherwise it is left out"). Row 35's "a key the build does not already need" covers heavy parts but excludes tools. #94 removed the choice entirely (always on).

5. The own-job path (C1b) is résumé-shaped in some generations (guide/spec)

  • crewAI course: agnostic spec on guide v2.8 #94: the team format allowed only 4 tools, two of them résumé-only.
  • Candidate 3: asks "What format is your résumé (or other local document)?" and "search your résumé" of a learner with no résumé (conditioned on how documents arrive, not on the job).
  • crewAI course: agnostic spec on guide v2.8 (owner-picked, built twice) #96: résumé questions skip cleanly, custom tools go into a tool contract; but its web-search option says agents "read the résumé", and "written to contract D" has no clear target for the build agent.
  • Builder checks: builders reword résumé examples for an own job well (2 of 2), but cannot remove a question that should not be asked.
  • C1b gives no inputs for the sender or offer, so an outreach email ends up with placeholders.
  • An own-job build keeps the résumé crew's reference tests (T1–T21), because the spec both says "leave out what is not chosen" and "C1b adds the same tests".

6. Offline tests vs the real model (spec)

  • The scripted stand-in uses the framework's text tool format; the real model uses native tool calls, so some failures appear only in live runs.
  • "Label every stand-in output" conflicts with T10 (result files must equal the scripted text exactly).
  • The sample addresses are *.example.test, so the spec's "real run on the sample" cannot fetch them; builders add a sample-pages flag.

7. Learner-facing wording

8. Framework side effects the spec never mentions (framework facts)

  • crewAI writes to the home folder (~/.config/crewai, ~/Library/Application Support/crewai/credentials/secret.key), keeps a SQLite file of task outputs (including the résumé text), checks PyPI for updates, and sends telemetry unless switched off.
  • crewAI stops a run after 5 identical tool calls, and in older versions the agent loop expected a text reply format current models skip (the pinned v2.6 build's agents never read the résumé).
  • Delegation default changed from on (course era) to off; specs set it explicitly.

9. Not yet checked

  • Real job boards (login walls, JavaScript-heavy pages) with the plain page fetcher.
  • How a learner swaps in their own résumé after the recommended build (a setting/path).
  • A build by an agent other than Opus.

Related: #87, #91, #92, #96.

Activity

  1. Carr1005 commented on Oct 27, 2026

    @Carr1005
    CollaboratorAuthor

    Addendum to section 5: what a learner who picks their own job sees (#96, one build)

    Build: #96's spec, learner answers "choose", then C1b "researching sales leads … I don't have any résumé", every other answer recommended. Clean-room Opus builder; app run by hand on Shopify.

    During the questions (mostly clean)

    • Résumé questions skipped in one line each ("Skipping C2 (résumé format): it is asked only when C1 is C1a").
    • C9 ("Should independent tasks run at the same time?") is asked although the learner's tasks are a strict chain; the builder had to add "(Your three tasks each need the one before…)".
    • C11 ("Add a reviewer agent at the end?") overlaps the learner's own checker agent; the builder explained it as "one more, separate reviewer".
    • Builder-facing wording for a non-coder: C4 (crewAI vs own orchestrator vs another framework), C10 (delegation), C6b ("to every agent that has the page-fetch tool").

    In the checklist

    • The learner reads about the résumé crew: "Embedder: not used by the learner's job … The résumé crew kept as the runner's reference fixture uses text-embedding-3-small"; notes "N1: The résumé crew … its tools and its tests T1–T21 are kept" and "S5 résumé file is irrelevant to the learner's job".

    In the app

    • Two crews ship side by side: crews/job_application.json (the course's résumé crew) and crews/sales_lead.json (theirs), with the sample résumé data and its 28 tests. The learner selects their crew by path on every run (--crew crews/sales_lead.json).

    In the output

    • outreach_email.md is the email, then ---, then a CLAIMS CHECK list: not a ready-to-send email (builder's choice).
    • Placeholders "[Your name]", "[Your company]", "[What you offer]": the own-job option collects agents and tasks but never asks what the job needs as inputs (sender, offer).
    • The console prints a JSON dump.
    • The core job worked: a manual Shopify run produced a factual, claim-checked email (two claims verified on the live pages).

    Causes

    Oddity Comes from
    Résumé crew and tests shipped in the learner's app Spec contradiction: "leave out what is not chosen" vs "C1b adds the same tests"
    C9 asked for a chain-only job Spec asks it regardless of the job
    C11 overlaps the learner's checker Spec cannot see the learner's own team
    No sender/offer inputs C1b never asks what the job needs as input
    Claims list inside the email file Builder's choice
    Jargon in C4/C9/C10 Questions worded for builders, not learners
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions