A system configured to categorize source code blocks, the system comprising: a code repository accessor configured to: access a code repository; and select a source code block; a signature generator configured to generate a signature for the source code block, the generated signature provides entry and exit conditions of the source code block, and further provides hints/inferential clues as to a function of the source code block; a collateral miner configured to extract collateral from the source code block, the collateral associated with the source code block and include a first type of collateral and a second type of collateral different from the first type of collateral; a tokenizer configured to transform the source code block into tokens, which are the individual elements of the source code block; a function assessor configured to determine the function of the source code block based on the first type of collateral and the tokens; an input/output determiner configured to determine an input and an output of the source code block based on the second type of collateral and the signature; a tagger configured to categorize the source code block with the function, the input, and the output; and a catalog compiler configured to add the categorized source code block with the associated categorization tags of the function, the input, and the output to a catalog, wherein the first type of collateral is a unit test that defines expected input of, expected output of, and details of the function and/or expected behavior of the source code block, and the second type of collateral is documentation that inform on details of the function the source code block performs on the input to generate the output. a code repository accessor configured to: access a code repository; and select a source code block; access a code repository; and select a source code block; a signature generator configured to generate a signature for the source code block, the generated signature provides entry and exit conditions of the source code block, and further provides hints/inferential clues as to a function of the source code block; a collateral miner configured to extract collateral from the source code block, the collateral associated with the source code block and include a first type of collateral and a second type of collateral different from the first type of collateral; a tokenizer configured to transform the source code block into tokens, which are the individual elements of the source code block; a function assessor configured to determine the function of the source code block based on the first type of collateral and the tokens; an input/output determiner configured to determine an input and an output of the source code block based on the second type of collateral and the signature; a tagger configured to categorize the source code block with the function, the input, and the output; and a catalog compiler configured to add the categorized source code block with the associated categorization tags of the function, the input, and the output to a catalog, wherein the first type of collateral is a unit test that defines expected input of, expected output of, and details of the function and/or expected behavior of the source code block, and the second type of collateral is documentation that inform on details of the function the source code block performs on the input to generate the output.