https://github.com/TINKPA/receipt-assistant
· scanned 2026-06-16 00:37 UTC (2 months, 2 weeks ago)
116 raw signals (0 security + 116 graph)
Last scanned 2 months, 2 weeks ago · v1 · 115 actionable findings from 1 signal source. 1 repeated signal grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 856 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
parseArgs |
software | healthy | scripts/backfill-photo-ocr.ts:parseArgs |
loadCandidates |
software | healthy | scripts/backfill-photo-ocr.ts:loadCandidates |
photos |
software | healthy | scripts/backfill-photo-ocr.ts:photos |
buildPlacePrompt |
software | healthy | scripts/backfill-photo-ocr.ts:buildPlacePrompt |
runClaude |
software | healthy | scripts/backfill-photo-ocr.ts:runClaude |
parseClaudeJson |
software | healthy | scripts/backfill-photo-ocr.ts:parseClaudeJson |
applyOcr |
software | healthy | scripts/backfill-photo-ocr.ts:applyOcr |
main |
software | healthy | scripts/backfill-photo-ocr.ts:main |
argOf |
software | healthy | scripts/eval-dedup.ts:argOf |
q |
software | healthy | scripts/eval-dedup.ts:q |
api |
software | healthy | scripts/eval-dedup.ts:api |
postBatch |
software | healthy | scripts/eval-dedup.ts:postBatch |
json |
software | healthy | scripts/eval-dedup.ts:json |
pollBatch |
software | healthy | scripts/eval-dedup.ts:pollBatch |
stubFile |
software | healthy | scripts/eval-dedup.ts:stubFile |
reencode |
software | healthy | scripts/eval-dedup.ts:reencode |
makeEml |
software | healthy | scripts/eval-dedup.ts:makeEml |
runCase |
software | healthy | scripts/eval-dedup.ts:runCase |
assert |
software | healthy | scripts/eval-dedup.ts:assert |
main |
software | healthy | scripts/eval-dedup.ts:main |
mk |
software | healthy | scripts/eval-dedup.ts:mk |
parseArgs |
software | healthy | scripts/backfill-phash.ts:parseArgs |
main |
software | healthy | scripts/backfill-phash.ts:main |
rows |
software | healthy | scripts/backfill-phash.ts:rows |
hashed |
software | healthy | scripts/backfill-phash.ts:hashed |
parseArgs |
software | healthy | scripts/backfill-multilingual-places.ts:parseArgs |
loadPending |
software | healthy | scripts/backfill-multilingual-places.ts:loadPending |
fetchPlace |
software | healthy | scripts/backfill-multilingual-places.ts:fetchPlace |
s |
software | healthy | scripts/backfill-multilingual-places.ts:s |
n |
software | healthy | scripts/backfill-multilingual-places.ts:n |
derive |
software | healthy | scripts/backfill-multilingual-places.ts:derive |
pgArrayLiteral |
software | healthy | scripts/backfill-multilingual-places.ts:pgArrayLiteral |
applyUpdate |
software | healthy | scripts/backfill-multilingual-places.ts:applyUpdate |
main |
software | healthy | scripts/backfill-multilingual-places.ts:main |
parseArgs |
software | healthy | scripts/backfill-merchants.ts:parseArgs |
buildPrompt |
software | healthy | scripts/backfill-merchants.ts:buildPrompt |
runClaude |
software | healthy | scripts/backfill-merchants.ts:runClaude |
parseClassifications |
software | healthy | scripts/backfill-merchants.ts:parseClassifications |
main |
software | healthy | scripts/backfill-merchants.ts:main |
pending |
software | healthy | scripts/backfill-merchants.ts:pending |
ins |
software | healthy | scripts/backfill-merchants.ts:ins |
parseArgs |
software | healthy | scripts/eval-dates.ts:parseArgs |
sipsReencode |
software | healthy | scripts/eval-dates.ts:sipsReencode |
fetchJson |
software | healthy | scripts/eval-dates.ts:fetchJson |
postBatch |
software | healthy | scripts/eval-dates.ts:postBatch |
getBatch |
software | healthy | scripts/eval-dates.ts:getBatch |
getTransaction |
software | healthy | scripts/eval-dates.ts:getTransaction |
pollBatch |
software | healthy | scripts/eval-dates.ts:pollBatch |
score |
software | healthy | scripts/eval-dates.ts:score |
payeeLower |
software | healthy | scripts/eval-dates.ts:payeeLower |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
docker-compose.test.yml |
software | healthy | docker-compose.test.yml |
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
package.json |
software | healthy | package.json |
Dockerfile |
software | healthy | Dockerfile |
package-lock.json |
software | healthy | package-lock.json |
.env.example |
software | healthy | .env.example |
tsconfig.json |
software | healthy | tsconfig.json |
drizzle.config.ts |
software | healthy | drizzle.config.ts |
docker-compose.yml |
software | healthy | docker-compose.yml |
entrypoint.sh |
software | healthy | docker/entrypoint.sh |
async-pipeline-rewrite.md |
software | healthy | docs/async-pipeline-rewrite.md |
smoke-batch.md |
software | healthy | scripts/smoke-batch.md |
backfill-photo-ocr.ts |
software | healthy | scripts/backfill-photo-ocr.ts |
eval-dates.md |
software | healthy | scripts/eval-dates.md |
generate-openapi.ts |
software | healthy | scripts/generate-openapi.ts |
smoke-v1-ingest.md |
software | healthy | scripts/smoke-v1-ingest.md |
eval-dedup.ts |
software | healthy | scripts/eval-dedup.ts |
backfill-phash.ts |
software | healthy | scripts/backfill-phash.ts |
seed.ts |
software | healthy | scripts/seed.ts |
backfill-multilingual-places.ts |
software | healthy | scripts/backfill-multilingual-places.ts |
backfill-merchants.ts |
software | healthy | scripts/backfill-merchants.ts |
eval-dates.ts |
software | healthy | scripts/eval-dates.ts |
sandbox-reset.sh |
software | healthy | scripts/sandbox-reset.sh |
benchmark.sh |
software | healthy | scripts/benchmark.sh |
eval-dates.fixtures.json |
software | healthy | scripts/eval-dates.fixtures.json |
generate-build-info.mjs |
software | healthy | scripts/generate-build-info.mjs |
smoke-v1-ingest.ts |
software | healthy | scripts/smoke-v1-ingest.ts |
migrate.ts |
software | healthy | scripts/migrate.ts |
backfill-channel-parties.ts |
software | healthy | scripts/backfill-channel-parties.ts |
README.md |
software | healthy | langfuse/README.md |
ingest_sessions.py |
software | healthy | langfuse/ingest_sessions.py |
docker-compose.yml |
software | healthy | langfuse/docker-compose.yml |
0007_align_expense_accounts_to_seven.sql |
software | healthy | drizzle/0007_align_expense_accounts_to_seven.sql |
0020_jazzy_matthew_murdock.sql |
software | healthy | drizzle/0020_jazzy_matthew_murdock.sql |
0021_new_lethal_legion.sql |
software | healthy | drizzle/0021_new_lethal_legion.sql |
0028_rare_thunderbolt_ross.sql |
software | healthy | drizzle/0028_rare_thunderbolt_ross.sql |
0014_places_custom_name.sql |
software | healthy | drizzle/0014_places_custom_name.sql |
0022_stale_slipstream.sql |
software | healthy | drizzle/0022_stale_slipstream.sql |
0025_closed_vindicator.sql |
software | healthy | drizzle/0025_closed_vindicator.sql |
0010_display_name_zh_is_native.sql |
software | healthy | drizzle/0010_display_name_zh_is_native.sql |
0002_batch_ingest.sql |
software | healthy | drizzle/0002_batch_ingest.sql |
0008_backfill_canonical_merchant_category.sql |
software | healthy | drizzle/0008_backfill_canonical_merchant_category.sql |
0016_complete_gateway.sql |
software | healthy | drizzle/0016_complete_gateway.sql |
0029_dear_wendell_vaughn.sql |
software | healthy | drizzle/0029_dear_wendell_vaughn.sql |
0024_relative_file_paths.sql |
software | healthy | drizzle/0024_relative_file_paths.sql |
0018_zippy_gateway.sql |
software | healthy | drizzle/0018_zippy_gateway.sql |
0017_dusty_tinkerer.sql |
software | healthy | drizzle/0017_dusty_tinkerer.sql |
0011_phase2_re_derive.sql |
software | healthy | drizzle/0011_phase2_re_derive.sql |
0019_tricky_korvac.sql |
software | healthy | drizzle/0019_tricky_korvac.sql |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
GET /openapi.json |
api | healthy | src/app.ts |
USE /docs |
api | healthy | src/app.ts |
GET /health |
api | healthy | src/app.ts |
GET /version |
api | healthy | src/app.ts |
USE /v1/accounts |
api | healthy | src/app.ts |
USE /v1/transactions |
api | healthy | src/app.ts |
USE /v1/items |
api | healthy | src/app.ts |
USE /v1/products |
api | healthy | src/app.ts |
USE /v1/owned-items |
api | healthy | src/app.ts |
USE /v1/wish-items |
api | healthy | src/app.ts |
USE /v1/insights |
api | healthy | src/app.ts |
USE /v1 |
api | healthy | src/app.ts |
USE /v1/brands |
api | healthy | src/app.ts |
USE /v1/postings |
api | healthy | src/app.ts |
USE /v1/documents |
api | healthy | src/app.ts |
USE /v1/ingest |
api | healthy | src/app.ts |
USE /v1/batches |
api | healthy | src/app.ts |
USE /v1/ingests |
api | healthy | src/app.ts |
USE /v1/reports |
api | healthy | src/app.ts |
USE /v1/merchants |
api | healthy | src/app.ts |
USE /v1/places |
api | healthy | src/app.ts |
USE /v1/admin |
api | healthy | src/app.ts |
POST /batch |
api | healthy | src/routes/ingest.ts |
GET / |
api | healthy | src/routes/ingest.ts |
GET /:id |
api | healthy | src/routes/ingest.ts |
GET /:id/stream |
api | healthy | src/routes/ingest.ts |
POST / |
api | healthy | src/routes/owned-items.ts |
PATCH /:id |
api | healthy | src/routes/owned-items.ts |
DELETE /:id |
api | healthy | src/routes/owned-items.ts |
POST /:id/reconcile |
api | healthy | src/routes/reconcile.ts |
GET /:id/reconcile |
api | healthy | src/routes/reconcile.ts |
POST /:id/reconcile/apply |
api | healthy | src/routes/reconcile.ts |
POST /:id/reconcile/reject |
api | healthy | src/routes/reconcile.ts |
GET /:id/balance |
api | healthy | src/routes/accounts.ts |
GET /:id/register |
api | healthy | src/routes/accounts.ts |
POST /refresh |
api | healthy | src/routes/insights.ts |
POST /:id/dismiss |
api | healthy | src/routes/insights.ts |
POST /ask |
api | healthy | src/routes/insights.ts |
GET /transactions/:id/parties |
api | healthy | src/routes/parties.ts |
GET /brands/:brandId/party-summary |
api | healthy | src/routes/parties.ts |
GET /:id/transactions |
api | healthy | src/routes/merchants.ts |
GET /:id/photo |
api | healthy | src/routes/merchants.ts |
POST /:id/re-derive |
api | healthy | src/routes/places.ts |
POST /:id/refresh |
api | healthy | src/routes/places.ts |
GET /:id/map |
api | healthy | src/routes/places.ts |
GET /:id/photos/:rank/content |
api | healthy | src/routes/places.ts |
GET /summary |
api | healthy | src/routes/reports.ts |
GET /trends |
api | healthy | src/routes/reports.ts |
GET /net_worth |
api | healthy | src/routes/reports.ts |
GET /cashflow |
api | healthy | src/routes/reports.ts |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
/health |
frontend | healthy | src/openapi.ts |
/version |
frontend | healthy | src/openapi.ts |
/v1/ingest/batch |
frontend | healthy | src/routes/ingest.ts |
/v1/batches |
frontend | healthy | src/routes/ingest.ts |
/v1/batches/{id} |
frontend | healthy | src/routes/ingest.ts |
/v1/batches/{id}/stream |
frontend | healthy | src/routes/ingest.ts |
/v1/ingests |
frontend | healthy | src/routes/ingest.ts |
/v1/ingests/{id} |
frontend | healthy | src/routes/ingest.ts |
/v1/owned-items |
frontend | healthy | src/routes/owned-items.ts |
/v1/owned-items/{id} |
frontend | healthy | src/routes/owned-items.ts |
/v1/batches/{id}/reconcile |
frontend | healthy | src/routes/reconcile.ts |
/v1/batches/{id}/reconcile/apply |
frontend | healthy | src/routes/reconcile.ts |
/v1/batches/{id}/reconcile/reject |
frontend | healthy | src/routes/reconcile.ts |
/v1/accounts |
frontend | healthy | src/routes/accounts.ts |
/v1/accounts/{id} |
frontend | healthy | src/routes/accounts.ts |
/v1/accounts/{id}/balance |
frontend | healthy | src/routes/accounts.ts |
/v1/accounts/{id}/register |
frontend | healthy | src/routes/accounts.ts |
/v1/insights |
frontend | healthy | src/routes/insights.ts |
/v1/insights/refresh |
frontend | healthy | src/routes/insights.ts |
/v1/insights/{id}/dismiss |
frontend | healthy | src/routes/insights.ts |
/v1/insights/ask |
frontend | healthy | src/routes/insights.ts |
/v1/transactions/{id}/parties |
frontend | healthy | src/routes/parties.ts |
/v1/brands/{brandId}/party-summary |
frontend | healthy | src/routes/parties.ts |
/v1/merchants/{id} |
frontend | healthy | src/routes/merchants.ts |
/v1/merchants/{id}/photo |
frontend | healthy | src/routes/merchants.ts |
/v1/merchants/{id}/transactions |
frontend | healthy | src/routes/merchants.ts |
/v1/items |
frontend | healthy | src/routes/items.ts |
/v1/places/{id} |
frontend | healthy | src/routes/places.ts |
/v1/places/{id}/re-derive |
frontend | healthy | src/routes/places.ts |
/v1/places/{id}/refresh |
frontend | healthy | src/routes/places.ts |
/v1/places/{id}/map |
frontend | healthy | src/routes/places.ts |
/v1/places/{id}/photos/{rank}/content |
frontend | healthy | src/routes/places.ts |
/v1/reports/summary |
frontend | healthy | src/routes/reports.ts |
/v1/reports/trends |
frontend | healthy | src/routes/reports.ts |
/v1/reports/net_worth |
frontend | healthy | src/routes/reports.ts |
/v1/reports/cashflow |
frontend | healthy | src/routes/reports.ts |
/v1/brands |
frontend | healthy | src/routes/brands.ts |
/v1/brands/{brandId} |
frontend | healthy | src/routes/brands.ts |
/v1/brands/{brandId}/assets |
frontend | healthy | src/routes/brands.ts |
/v1/brands/{brandId}/assets/{assetId}/icon |
frontend | healthy | src/routes/brands.ts |
/v1/brands/{brandId}/icon |
frontend | healthy | src/routes/brands.ts |
/v1/brands/{brandId}/rollup |
frontend | healthy | src/routes/brands.ts |
/v1/wish-items |
frontend | healthy | src/routes/wish-items.ts |
/v1/wish-items/{id} |
frontend | healthy | src/routes/wish-items.ts |
/v1/documents |
frontend | healthy | src/routes/documents.ts |
/v1/documents/{id} |
frontend | healthy | src/routes/documents.ts |
/v1/documents/{id}/content |
frontend | healthy | src/routes/documents.ts |
/v1/documents/{id}/rendered |
frontend | healthy | src/routes/documents.ts |
/v1/documents/{id}/links |
frontend | healthy | src/routes/documents.ts |
/v1/documents/{id}/links/{txn_id} |
frontend | healthy | src/routes/documents.ts |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
insights |
data | healthy | drizzle/0028_rare_thunderbolt_ross.sql |
batches |
data | healthy | drizzle/0002_batch_ingest.sql |
ingests |
data | healthy | drizzle/0002_batch_ingest.sql |
reconcile_proposals |
data | healthy | drizzle/0002_batch_ingest.sql |
products |
data | healthy | drizzle/0016_complete_gateway.sql |
transaction_parties |
data | healthy | drizzle/0029_dear_wendell_vaughn.sql |
brand_assets |
data | healthy | drizzle/0018_zippy_gateway.sql |
brands |
data | healthy | drizzle/0018_zippy_gateway.sql |
owned_items |
data | healthy | drizzle/0017_dusty_tinkerer.sql |
derivation_events |
data | healthy | drizzle/0011_phase2_re_derive.sql |
users |
data | healthy | drizzle/0000_init.sql |
workspace_members |
data | healthy | drizzle/0000_init.sql |
workspaces |
data | healthy | drizzle/0000_init.sql |
accounts |
data | healthy | drizzle/0000_init.sql |
transactions |
data | healthy | drizzle/0000_init.sql |
postings |
data | healthy | drizzle/0000_init.sql |
document_links |
data | healthy | drizzle/0000_init.sql |
documents |
data | healthy | drizzle/0000_init.sql |
transaction_events |
data | healthy | drizzle/0000_init.sql |
idempotency_keys |
data | healthy | drizzle/0000_init.sql |
place_snapshots |
data | healthy | drizzle/0012_place_snapshots.sql |
transaction_items |
data | healthy | drizzle/0015_natural_ezekiel_stane.sql |
wish_items |
data | healthy | drizzle/0027_dear_zarda.sql |
places |
data | healthy | drizzle/0003_foamy_lady_mastermind.sql |
place_photos |
data | healthy | drizzle/0009_multilingual_place_cache.sql |
place_reviews |
data | healthy | drizzle/0009_multilingual_place_cache.sql |
merchants |
data | healthy | drizzle/0006_chilly_smasher.sql |
| Label | Layer | Status | Path |
|---|---|---|---|
docker |
software | healthy | docker |
docs |
software | healthy | docs |
scripts |
software | healthy | scripts |
langfuse |
software | healthy | langfuse |
drizzle |
software | healthy | drizzle |
meta |
software | healthy | drizzle/meta |
src |
software | healthy | src |
google |
software | healthy | src/google |
enrichment |
software | healthy | src/enrichment |
generated |
software | healthy | src/generated |
events |
software | healthy | src/events |
ingest |
software | healthy | src/ingest |
http |
software | healthy | src/http |
insights |
software | healthy | src/insights |
schema |
software | healthy | src/schema |
projection |
software | healthy | src/projection |
routes |
software | healthy | src/routes |
reconcile |
software | healthy | src/reconcile |
db |
software | healthy | src/db |
images |
software | healthy | src/images |
schemas |
software | healthy | src/schemas |
v1 |
software | healthy | src/schemas/v1 |
openapi |
software | healthy | openapi |
| Label | Layer | Status | Path |
|---|---|---|---|
GooglePlacesError |
software | healthy | src/google/places-fetch.ts:GooglePlacesError |
GooglePlacesApiKeyMissing |
software | healthy | src/google/places-fetch.ts:GooglePlacesApiKeyMissing |
StaticMapOptsInvalid |
software | healthy | src/google/static-map.ts:StaticMapOptsInvalid |
GoogleStaticMapsApiKeyMissing |
software | healthy | src/google/static-map.ts:GoogleStaticMapsApiKeyMissing |
GoogleStaticMapsError |
software | healthy | src/google/static-map.ts:GoogleStaticMapsError |
HttpProblem |
software | healthy | src/http/problem.ts:HttpProblem |
ValidationProblem |
software | healthy | src/http/problem.ts:ValidationProblem |
NotFoundProblem |
software | healthy | src/http/problem.ts:NotFoundProblem |
VersionMismatchProblem |
software | healthy | src/http/problem.ts:VersionMismatchProblem |
PreconditionRequiredProblem |
software | healthy | src/http/problem.ts:PreconditionRequiredProblem |
IdempotencyConflictProblem |
software | healthy | src/http/problem.ts:IdempotencyConflictProblem |
AccountInUseProblem |
software | healthy | src/http/problem.ts:AccountInUseProblem |
MustVoidInsteadProblem |
software | healthy | src/http/problem.ts:MustVoidInsteadProblem |
PostingsImbalanceProblem |
software | healthy | src/http/problem.ts:PostingsImbalanceProblem |
NoRawResponseProblem |
software | healthy | src/http/problem.ts:NoRawResponseProblem |
GooglePlacesUnavailableProblem |
software | healthy | src/http/problem.ts:GooglePlacesUnavailableProblem |
GooglePlacesUpstreamProblem |
software | healthy | src/http/problem.ts:GooglePlacesUpstreamProblem |
DocumentHasLinksProblem |
software | healthy | src/http/problem.ts:DocumentHasLinksProblem |
defaults |
software | healthy | src/schema/owned_items.ts:defaults |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
receipts-postgres |
hardware | healthy | docker-compose.yml |
receipt-assistant |
hardware | healthy | docker-compose.yml |
langfuse-worker |
hardware | healthy | langfuse/docker-compose.yml |
langfuse-web |
hardware | healthy | langfuse/docker-compose.yml |
clickhouse |
hardware | healthy | langfuse/docker-compose.yml |
minio |
hardware | healthy | langfuse/docker-compose.yml |
redis |
hardware | healthy | langfuse/docker-compose.yml |
postgres |
hardware | healthy | langfuse/docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:5433 |
network | healthy | docker-compose.test.yml |
port:5432 |
network | healthy | docker-compose.test.yml |
port:3001 |
network | healthy | docker-compose.test.yml |
port:3000 |
network | healthy | docker-compose.test.yml |
port:3333 |
network | healthy | langfuse/docker-compose.yml |
port:101 |
network | healthy | langfuse/docker-compose.yml |
port:9090 |
network | healthy | langfuse/docker-compose.yml |
port:9000 |
network | healthy | langfuse/docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::docker/entrypoint.sh |
security | healthy | docker/entrypoint.sh |
auth::src/ingest/worker.ts |
security | healthy | src/ingest/worker.ts |
auth::docker-compose.test.yml |
security | healthy | docker-compose.test.yml |
auth::scripts/sandbox-reset.sh |
security | healthy | scripts/sandbox-reset.sh |
auth::docker-compose.yml |
security | healthy | docker-compose.yml |
auth::CLAUDE.md |
security | healthy | CLAUDE.md |
auth::README.md |
security | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
postgres |
data | healthy | docker-compose.test.yml |
postgresql |
data | healthy | docker-compose.test.yml |
clickhouse |
data | healthy | README.md |
redis |
data | healthy | README.md |
sqlite |
data | healthy | CLAUDE.md |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-c3vpr3ws |
software | healthy | /tmp/repobility-clone-c3vpr3ws |
| Label | Layer | Status | Path |
|---|---|---|---|
100.84.82.96 |
network | healthy | scripts/eval-dedup.ts |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | src/http/sse.ts |
| Label | Layer | Status | Path |
|---|---|---|---|
vps::aws |
hardware | healthy | package-lock.json |
This page is publicly accessible at:
https://repobility.com/scan/773a0e7a-784c-4d75-b790-5f3b13f21c69/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/773a0e7a-784c-4d75-b790-5f3b13f21c69/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.