diff --git a/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx b/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx
index 4bb30d6f37b3cd718abb462bb37cc59db844f3ab..8a1e6a19bc539143d1cfe55495b6f1ca2c51e354 100644
--- a/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx
+++ b/src/renderer/components/Experiment/Eval/EvalJobsTable.tsx
@@ -74,6 +74,7 @@ const EvalJobsTable = () => {
   const [viewOutputFromJob, setViewOutputFromJob] = useState(-1);
   const [openCSVModal, setOpenCSVModal] = useState(false);
   const [currentJobId, setCurrentJobId] = useState('');
+  const [fileNameForDetailedReport, setFileNameForDetailedReport] = useState('');
 
   const fetchCSV = async (jobId) => {
     const response = await fetch(
@@ -112,6 +113,8 @@ const EvalJobsTable = () => {
       <ViewOutputModalStreaming
         jobId={viewOutputFromJob}
         setJobId={setViewOutputFromJob}
+        setFileName={setFileNameForDetailedReport}
+        fileName={fileNameForDetailedReport}
       />
       <Typography level="h3">Executions</Typography>
       <Sheet sx={{ overflowY: 'scroll' }}>
@@ -151,6 +154,7 @@ const EvalJobsTable = () => {
                 <td>
                   <RenderScore score={job?.job_data?.score} />
                   {job?.job_data?.additional_output_path && (
+                  job.job_data.additional_output_path.toLowerCase().endsWith('.csv') ? (
                     <Link
                       onClick={() => handleOpenCSVModal(job?.id)}
                       sx={{ mt: 1, ml: 1 }}
@@ -158,7 +162,19 @@ const EvalJobsTable = () => {
                     >
                       Detailed Report
                     </Link>
-                  )}
+                  ) : (
+                    <Link
+                      onClick={() => {
+                        setFileNameForDetailedReport(job?.job_data?.additional_output_path);
+                        setViewOutputFromJob(job?.id);
+                      }}
+                      sx={{ mt: 1, ml: 1 }}
+                      startDecorator={<Grid3X3Icon size="14px" />}
+                    >
+                      Detailed Report
+                    </Link>
+                  )
+                )}
                 </td>
                 <td>
                   <ButtonGroup
diff --git a/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx b/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx
index 6eed6f0d24c140138bf436cb416046847419e42a..bef6538674e00addb1e435c08758289549a9713e 100644
--- a/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx
+++ b/src/renderer/components/Experiment/Eval/ViewOutputModalStreaming.tsx
@@ -7,12 +7,26 @@ import OutputTerminal from 'renderer/components/OutputTerminal';
 
 const fetcher = (url) => fetch(url).then((res) => res.json());
 
-export default function ViewOutputModalStreaming({ jobId, setJobId }) {
+interface ViewOutputModalStreamingProps {
+  jobId: number;
+  setJobId: (id: number) => void;
+  fileName?: string | null;
+  setFileName: (value: string) => void;
+}
+
+export default function ViewOutputModalStreaming({ jobId, setJobId, fileName,  setFileName}: ViewOutputModalStreamingProps) {
+  const logEndpoint = fileName !== ''
+  ? chatAPI.Endpoints.Experiment.StreamDetailedJSONReportFromJob(jobId, fileName)
+  : chatAPI.Endpoints.Experiment.StreamOutputFromJob(jobId);
+  const title_sentence = fileName !== '' ? 'Detailed Report for Job' : 'Output from Job';
+
   return (
-    <Modal open={jobId != -1} onClose={() => setJobId(-1)}>
+    <Modal open={jobId != -1} onClose={() => {setJobId(-1);
+      setFileName('');
+    }}>
       <ModalDialog sx={{ width: '80vw', height: '80vh' }}>
         <ModalClose />
-        <Typography level="title-lg">Output from job: {jobId}</Typography>
+        <Typography level="title-lg"> {title_sentence} {jobId}</Typography>
         <Box
           sx={{
             height: '100%',
@@ -24,9 +38,7 @@ export default function ViewOutputModalStreaming({ jobId, setJobId }) {
           }}
         >
           <OutputTerminal
-            logEndpoint={chatAPI.Endpoints.Experiment.StreamOutputFromJob(
-              jobId
-            )}
+            logEndpoint={logEndpoint}
             lineAnimationDelay={5}
           />
         </Box>
diff --git a/src/renderer/lib/transformerlab-api-sdk.ts b/src/renderer/lib/transformerlab-api-sdk.ts
index d208cfbb99fa8d98b0080deb1163ed6d3dabf680..b12d8acd575f04703e484808dc99c1eb88788554 100644
--- a/src/renderer/lib/transformerlab-api-sdk.ts
+++ b/src/renderer/lib/transformerlab-api-sdk.ts
@@ -1382,6 +1382,8 @@ Endpoints.Experiment = {
     API_URL() + `train/job/${jobId}/stream_output`,
   StreamOutputFromJob: (jobId: string) =>
     API_URL() + `jobs/${jobId}/stream_output`,
+  StreamDetailedJSONReportFromJob: (jobId: string, fileName: string) =>
+    API_URL() + `jobs/${jobId}/stream_detailed_json_report?file_name=${fileName}`,
   StreamAdditionalDetails : (jobId: string) =>
     API_URL() + `jobs/${jobId}/get_additional_details`,
   GetGeneratedDataset : (jobId: string) =>