File size: 13,432 Bytes
59db361
 
 
 
 
1c43ec2
59db361
1c43ec2
59db361
 
 
 
 
1c43ec2
 
59db361
 
 
1c43ec2
 
 
 
 
 
 
59db361
 
1c43ec2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59db361
1c43ec2
 
 
 
 
 
 
 
 
 
 
59db361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1c43ec2
59db361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3396ad2
 
 
 
 
 
 
 
 
 
 
 
 
59db361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1c43ec2
59db361
 
 
1c43ec2
59db361
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Journal-Entry Validation — Centific AI Research</title>
  <link rel="stylesheet" href="/static/styles.css">
  <link rel="stylesheet" href="/static/landing.css">
</head>
<body>
  <header class="topbar">
    <div class="brand-mark">JE</div>
    <div class="brand-text">
      <h1>Journal-Entry Validation</h1>
      <p class="brand-sub">Centific AI Research</p>
    </div>
    <span id="health-dot" title="backend status"></span>
  </header>
  <nav class="tabbar" aria-label="Site sections">
    <a href="#home" data-tab="home">Home</a>
    <a href="#datasets" data-tab="datasets">Datasets</a>
    <a href="#tasks" data-tab="tasks">Tasks</a>
    <a href="#scoring" data-tab="scoring">Scoring</a>
    <a href="#console" data-tab="console">Console</a>
  </nav>

  <main class="wrap">
    <div id="tab-home" class="tabpane landing" hidden>
      <section class="hero">
  <div>
    <p class="eyebrow">Centific AI Research</p>
    <h1 class="display">Can your AI audit <span class="grad">like an auditor?</span></h1>
    <p class="lede">An evaluation environment where AI agents investigate real
    government ledger data — and are scored the way professionals are.</p>
    <div class="cta-row">
      <a class="btn-primary" href="#tasks">Explore the environment</a>
      <a class="btn-ghost" href="https://www.centific.com/" target="_blank" rel="noopener">Talk to us</a>
    </div>
  </div>
  <div class="je-card" aria-hidden="true">
    <div class="je-head"><span>JE-2041-0193</span><span>period 7</span></div>
    <div class="je-row"><span>Dr&nbsp; 5210 Contracted services</span><span>12,480.00</span></div>
    <div class="je-row"><span>Cr&nbsp; 1010 Cash</span><span>12,480.00</span></div>
    <div class="je-row je-flag"><span>flag: duplicate payment</span><span>confirmed</span></div>
    <span class="stamp-chip">evidence cited ✓</span>
  </div>
</section>

<section>
  <p class="eyebrow">The problem</p>
  <h2>Answering isn't auditing</h2>
  <p class="section-intro">Finance and audit teams review thousands of journal
  entries every close. Sampling misses things; blanket rules flag too much.
  And an AI that merely <em>answers</em> can't be trusted with this work — you
  need one that <strong>investigates</strong>: opens the documents, checks the
  numbers, and cites its evidence.</p>
</section>

<section>
  <p class="eyebrow">What this is</p>
  <h2>Real cases, real tools, real scores</h2>
  <div class="step-strip">
    <div class="info-card">
      <h3>A case is issued</h3>
      <p>A slice of a real government ledger and a validation question. The
      environment holds a verified answer key the agent never sees.</p>
    </div>
    <div class="info-card">
      <h3>The agent investigates</h3>
      <p>It works the case with professional tools — querying the ledger,
      looking up reference data, opening supporting documents. Every tool call
      is logged.</p>
    </div>
    <div class="info-card">
      <h3>Every claim is scored</h3>
      <p>Findings are checked against the answer key; the way the agent worked
      is scored against professional standards. Deterministically.</p>
    </div>
  </div>
</section>

<section>
  <p class="eyebrow">How we measure</p>
  <h2>Three axes, reported separately</h2>
  <div class="axis-cards">
    <div class="info-card">
      <h3>Outcome</h3>
      <p>Did it find the right entries — and call each finding by the right
      name?</p>
    </div>
    <div class="info-card">
      <h3>Process</h3>
      <p>Did it work like an auditor — evidence opened, citations honest, no
      wasted steps?</p>
    </div>
    <div class="info-card axis-soon">
      <h3>Rationale <small>· upcoming</small></h3>
      <p>Is the written reasoning sound? Graded against human experts as
      judgment-call tasks arrive.</p>
    </div>
  </div>
</section>

<section>
  <p class="eyebrow">Why trust the numbers</p>
  <h2>Scores you can stand behind</h2>
  <ul class="trust-list">
    <li><strong>Fully reproducible.</strong> The same case always replays
    byte-for-byte — a score can be re-derived, not just believed.</li>
    <li><strong>Fabrication is fatal.</strong> Cite evidence the agent was
    never shown and the episode fails automatically, whatever the other numbers
    say.</li>
    <li><strong>Baselines set the floor.</strong> Two built-in scripted
    strategies — flag everything, answer without evidence — run on every task.
    A model only matters if it beats both.</li>
  </ul>
</section>

<footer class="land-footer">
  <span>Centific AI Research — journal-entry validation environment</span>
  <a class="btn-ghost" href="https://www.centific.com/" target="_blank" rel="noopener">Talk to us</a>
</footer>
    </div>
    <div id="tab-datasets" class="tabpane landing" data-content="/static/content/datasets.html" hidden></div>
    <div id="tab-tasks" class="tabpane landing" data-content="/static/content/tasks.html" hidden></div>
    <div id="tab-scoring" class="tabpane landing" data-content="/static/content/scoring.html" hidden></div>
    <div id="tab-console" class="tabpane" hidden>

      <section id="configure">
      <div class="configure-grid">

        <div class="panel col-tasks">
          <div class="panel-title">Tasks</div>
          <div class="panel-body">
            <div id="task-list" class="crowlist"></div>
          </div>
        </div>

        <div class="panel col-mid">
          <div class="panel-title">Configuration</div>
          <div class="panel-body">
            <fieldset class="box" id="knob-box" hidden>
              <legend class="lab">Knobs</legend>
              <div class="lab boxlab">Instance &amp; difficulty</div>
              <div id="knobs"></div>
            </fieldset>

            <fieldset class="box" id="tool-box" hidden>
              <legend class="lab">Tools</legend>
              <div class="lab boxlab">Tool surface <span class="lab-sub">(uncheck to raise difficulty)</span></div>
              <div id="tools" class="toolgrid"></div>
            </fieldset>

            <fieldset class="box" id="model-box">
              <legend class="lab">Models</legend>
              <div class="lab boxlab">Models × seeds</div>

              <div class="field-row">
                <span class="fieldlabel">Models</span>
                <div class="model-field">
                  <button type="button" id="model-dd-btn" class="dd-btn"
                          aria-haspopup="listbox" aria-expanded="false">
                    <span id="model-dd-label">Select models</span>
                    <span class="dd-caret" aria-hidden="true"></span>
                  </button>
                  <div id="model-dd" class="dd-panel" hidden>
                    <input type="search" id="model-search"
                           placeholder="Search all models…" autocomplete="off">
                    <p id="curated-note" class="dd-note" hidden></p>
                    <div id="model-list" class="dd-list" role="listbox"></div>
                    <p id="model-dd-hint" class="dd-note"></p>
                  </div>
                </div>
              </div>
              <div id="model-tags" class="model-tags"></div>

              <div class="field-row baseline-row">
                <span class="fieldlabel">Baselines</span>
                <label class="baseline-check">
                  <input type="checkbox" id="baseline-flag" value="baseline:flag_everything">
                  Flag everything
                </label>
                <label class="baseline-check">
                  <input type="checkbox" id="baseline-noev" value="baseline:no_evidence">
                  No evidence
                </label>
                <span class="fieldnote">scripted, free</span>
              </div>

              <div class="field-row">
                <span class="fieldlabel">Seeds per model</span>
                <input type="range" id="seed-count" min="1" max="20" step="1">
                <span class="fieldval mono" id="seed-count-val"></span>
              </div>
              <div class="field-row">
                <span class="fieldlabel">Step budget</span>
                <input type="range" id="step-budget-range" min="10" max="20000" step="10">
                <input type="number" id="step-budget-num" min="1" step="1" class="mono">
              </div>
              <div class="field-row">
                <span class="fieldlabel">Prompt version</span>
                <select id="prompt-version">
                  <option value="minimal">Minimal: bare task brief</option>
                  <option value="standard" selected>Standard: adds citation rule, step budget</option>
                  <option value="detailed">Detailed: adds scenario, rationale guidance</option>
                </select>
                <button type="button" id="prompt-view-btn" class="chip">View</button>
              </div>
              <div id="prompt-preview" class="prompt-preview" hidden>
                <div class="lab">System prompt</div>
                <pre id="prompt-preview-system" class="mono"></pre>
                <div class="lab">Task brief (user message)</div>
                <pre id="prompt-preview-brief" class="mono"></pre>
              </div>
            </fieldset>

            <p id="seed-warning" class="rnote bad" hidden></p>
            <p id="withheld-note" class="rnote warn" hidden></p>
            <p id="headroom-warning" class="rnote warn" hidden></p>
            <p id="launch-error" class="rnote bad" role="alert" hidden></p>
            <div class="launch-row">
              <button id="launch" type="button" disabled>Launch run</button>
            </div>
          </div>
        </div>

        <div class="panel col-run">
          <div class="panel-title">Run config</div>
          <div class="panel-body">
            <pre id="config-preview" class="mono"></pre>
            <div class="lab" style="margin-top:12px">Sweep estimate</div>
            <div class="box" id="sweep-estimate"></div>
          </div>
        </div>

      </div>
    </section>

    <section id="history">
      <div class="panel">
        <div class="panel-title panel-title-row">
          <span>Past runs</span>
          <button type="button" id="history-refresh" class="chip">Refresh</button>
        </div>
        <div class="panel-body">
          <p id="history-empty" class="rnote" hidden>No runs recorded yet. Configure and launch one above.</p>
          <div id="history-list" class="crowlist"></div>
        </div>
      </div>
    </section>

    <section id="live" hidden>
      <div class="panel">
        <div class="panel-title panel-title-row">
          <span>Live run</span>
          <span class="run-meta-row">
            <span id="live-run-id" class="mono"></span>
            <span id="live-status" class="stat"></span>
            <span id="live-conn" class="conn-badge"></span>
          </span>
        </div>
        <div class="panel-body">
          <p id="live-banner" class="rnote bad" hidden></p>

          <div class="lab">Episodes</div>
          <div id="episode-grid" class="episode-grid"></div>

          <div id="player-grid" class="player-grid" hidden>
            <div class="box" id="step-feed-panel">
              <div class="panel-head">
                <span class="lab" style="margin:0">Step log</span>
                <span id="step-feed-title" class="mono"></span>
              </div>
              <div id="step-feed" class="step-feed"></div>
            </div>
            <div class="box scoreboard">
              <div class="lab">Live scoreboard</div>
              <div id="scoreboard-body"></div>
            </div>
          </div>

          <p id="live-terminal-note" class="rnote bad" hidden></p>
        </div>
      </div>
    </section>

    <section id="results" hidden>
      <div class="panel">
        <div class="panel-title">Results</div>
        <div class="panel-body">
          <div class="results-level" id="results-level-1">
            <div class="panel-head">
              <h2>By model</h2>
              <button type="button" class="raw-toggle" data-level="1">Raw JSON</button>
            </div>
            <div id="results-model-table-wrap"></div>
            <pre id="results-raw-1" hidden></pre>
          </div>

          <div class="results-level" id="results-level-2" hidden>
            <div class="panel-head">
              <h3 id="results-level-2-title"></h3>
              <button type="button" class="raw-toggle" data-level="2">Raw JSON</button>
            </div>
            <div id="results-seed-table-wrap"></div>
            <pre id="results-raw-2" hidden></pre>
          </div>

          <div class="results-level" id="results-level-3" hidden>
            <div class="panel-head">
              <h3 id="results-level-3-title"></h3>
              <button type="button" class="raw-toggle" data-level="3">Raw JSON</button>
            </div>
            <div id="results-breakdown" hidden></div>
            <div id="results-step-table-wrap"></div>
            <pre id="results-raw-3" hidden></pre>
          </div>
        </div>
      </div>
    </section>

    </div>
  </main>

  <script src="/static/app.js"></script>
  <script src="/static/tabs.js"></script>
</body>
</html>